android - 如何排除传递性 native 库?

标签 android gradle java-native-interface android-gradle-plugin

假设我的项目依赖于两个库 A 和 B。这些库依赖于同一版本的库 C。库 C 依赖于几个共享库文件 D。要使用库 C,库 A 和B 都在其 jniLibs 目录中包含 D。

现在,这里的问题是,当我尝试使用配置的依赖项构建此项目时:

compile('group:A:1.0@aar')
compile('group:B:1.0@aar') {
    exclude group: 'group', module: 'C'
}

我收到一条错误,指出存在重复的 D 文件。我怎样才能通知 gradle 仅忽略我的一个库中的某些 jniLib? jniLibs 传递依赖项是否有排除模拟?

最佳答案

我能够通过 gradle 强制 gradle 仅使用它找到的共享库的第一个版本来实现此目的:

android {
    packagingOptions {
        pickFirst 'lib/armeabi/D.so'
        pickFirst 'lib/x86_64/D.so'
        pickFirst 'lib/armeabi-v7a/D.so'
        pickFirst 'lib/x86/D.so'
        pickFirst 'lib/arm64-v8a/D.so'
    }
}

关于android - 如何排除传递性 native 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45599162/

相关文章:

android - 如何 ACCESS_FINE_LOCATION 保持 GPS 关闭?

android - 如何断开 HTC(Froyo 及以下)手机上的 HttpUrlConnection?

Android 内存泄漏和垃圾收集

gradle - Gradle中的多个sonarRunner任务

java - JavaCL 和 JogAmp JOCL 比较如何?

java - Android:无法从 Intent 中设置/检索数据

android - Gradle 中新的 Implement 关键字是什么

android - 如何以编程方式从 Android 应用程序读取 gradle 文件属性

java - 在 HBase MapReduce 任务中加载 native 共享库

android - 即使在 deleteLocalRef 之后,jni 表也会溢出