假设我的项目依赖于两个库 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/