You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio引入JavaCV依赖构建Bundle时遇‘lib’目录名报错

解决JavaCV依赖导致Android Bundle构建失败的问题

引入以下JavaCV依赖后构建Android Bundle时失败:

implementation 'org.bytedeco:javacv:1.4.4'
implementation 'org.bytedeco.javacpp-presets:opencv:4.0.1-1.4.4:android-arm64'
implementation 'org.bytedeco.javacpp-presets:opencv:4.0.1-1.4.4:android-arm'
implementation 'org.bytedeco.javacpp-presets:opencv:4.0.1-1.4.4:android-x86'

报错信息:

Execution failed for task ':app:packageDebugBundle'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.PackageBundleTask$BundleToolWorkAction
   > File 'root/lib/arm64-v8a/include/cvkernels.h' uses reserved file or directory name 'lib'.

问题原因

Android App Bundle规范里,lib目录是专门用于存放Native库(.so文件)的保留目录,而旧版本JavaCV依赖包的lib目录下包含了头文件(如.h)等非Native库文件,违反打包规范导致构建失败。

解决方案

方案一:升级JavaCV及OpenCV Presets版本

旧版本JavaCV存在打包结构问题,升级到1.5.x及以上的稳定版本即可修复该问题,示例依赖如下:

implementation 'org.bytedeco:javacv:1.5.8'
implementation 'org.bytedeco.javacpp-presets:opencv:4.5.5-1.5.8:android-arm64'
implementation 'org.bytedeco.javacpp-presets:opencv:4.5.5-1.5.8:android-arm'
implementation 'org.bytedeco.javacpp-presets:opencv:4.5.5-1.5.8:android-x86'

方案二:过滤依赖中的非合规文件

如果无法升级版本,可在App模块的构建配置中添加打包规则,排除lib目录下的非.so文件:

Groovy DSL(build.gradle)
android {
    // 其他已有配置...
    packagingOptions {
        exclude 'lib/**/*.h'
        exclude 'lib/**/*.hpp'
        exclude 'lib/**/*.cmake'
    }
}
Kotlin DSL(build.gradle.kts)
android {
    // 其他已有配置...
    packagingOptions {
        exclude("lib/**/*.h")
        exclude("lib/**/*.hpp")
        exclude("lib/**/*.cmake")
    }
}

内容的提问来源于stack exchange,提问作者Zee Zero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 11:17:07