编译库时报错Execution failed for task ‘:app:mergeDebugNativeLibs‘.

第一种情况:可能是ndk的版本适配的问题,需要设置正确的ndk版本。 

第二种:在app/build.gradle中添加  packagingOptions { exclude 'lib/x86/libc++_shared.so' } 添加对应的报错库。

第三种:需要修改build.gradle 文件中的jniLibs.srcDirs = [‘libs’] 这个项。

在升级Android Studio 4.0之后,进行NDK开发的时候,引入第三方动态so库,编译报错如下:

Execution failed for task ':app:mergeDebugNativeLibs'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.MergeNativeLibsTask$MergeNativeLibsTaskWorkAction
   > 2 files found with path 'lib/x86/libc++_shared.so' from inputs:
      - E:\Work\Code\myk_sport_star_teach\build\myk_sport_core\intermediates\library_jni\debug\jni\x86\libc++_shared.so
      - C:\Users\Admin\.gradle\caches\transforms-3\69c4d5c9ec2874b600c421ebfa767f85\transformed\jetified-nanodet-1.0.0.20220815\jni\x86\libc++_shared.so
     If you are using jniLibs and CMake IMPORTED targets, see

这是因为新版本Android Gradle 插件 4.0的问题。
早期版本的 Android Gradle 插件要求您使用 jniLibs 明确打包您的 CMake 外部原生 build 使用的所有预构建库。您的库可能位于模块的 src/main/jniLibs 目录中,也可能位于在 build.gradle 文件中配置的某个其他目录中:

sourceSets {
    main {
        // The libs directory contains prebuilt libraries that are used by the
        // app's library defined in CMakeLists.txt via an IMPORTED target.
        jniLibs.srcDirs = ['libs']
    }
}

有了 Android Gradle 插件 4.0,上述配置不再是必需的,并且会导致构建失败。外部原生 build 现在会自动打包这些库,因此使用 jniLibs 明确打包库会导致重复。

解决方式
将第三方动态库移到libs目录下,并去掉配置项jniLibs.srcDirs = [‘libs’]。或改为:jniLibs.srcDirs = [],新版的Gradle已经不需要这些配制了,jnilibs目录也用不到了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值