我有两个适用于Android的Gradle模块,一个是库,一个是应用程序,应用程序依赖于模块,如下所示:compile project(path ':library' configuration: 'debug')
问题是两个模块都使用JNI,因此它们都打包libc++_shared.so
来自NDK,导致:
com.android.build.api.transform.TransformException:
com.android.builder.packaging.DuplicateFileException:
Duplicate files copied in APK lib/armeabi-v7a/libc++_shared.so
我尝试使用packagingOptions
,但似乎我只能使用它来完全排除该文件的打包,而不仅仅是从其他模块复制?
答案 0 :(得分:2)
您尝试使用哪种类型的packagingOptions
?可能是exlude
?看起来pickFirst
应该适合您。在这种情况下,您明确告诉Gradle您知道该问题并接受任何这些文件。根据您支持的体系结构,您可能只需要一些行。您可以找到详细信息in documentation
android {
// some stuff
packagingOptions {
pickFirst 'lib/armeabi-v7a/libgnustl_shared.so'
pickFirst 'lib/arm64-v8a/libgnustl_shared.so'
pickFirst 'lib/x86_64/libgnustl_shared.so'
pickFirst 'lib/x86/libgnustl_shared.so'
}
}