【问题标题】:How to exclude duplicate native library from Gradle project dependency?如何从 Gradle 项目依赖项中排除重复的本机库?
【发布时间】:2017-09-07 18:37:49
【问题描述】:

我有两个 Android 的 Gradle 模块,一个是库,一个是应用程序,应用程序对模块有依赖,像这样:compile project(path ':library' configuration: 'debug')

问题是两个模块都使用了JNI,所以它们都是packagelibc++_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,但似乎我只能使用它来完全排除该文件被打包,而不仅仅是从其他模块复制?

【问题讨论】:

    标签: android gradle java-native-interface android-gradle-plugin build.gradle


    【解决方案1】:

    您尝试使用哪种类型的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'
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-18
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      • 2016-02-25
      • 1970-01-01
      相关资源
      最近更新 更多