【问题标题】:Android gradle how to exclude spicific folder?Android gradle如何排除特定文件夹?
【发布时间】:2017-10-25 07:17:37
【问题描述】:

我尝试构建项目但出现此错误:

Error:Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK lib/x86/libjniopenblas.so
    File1: C:\Users\1\.gradle\caches\modules-2\files-2.1\org.bytedeco.javacpp-presets\openblas\0.2.19-1.3\2189141b6c83cc8e5b342b04e8f49e22996f72f4\openblas-0.2.19-1.3-android-x86.jar
    File2: D:\Smart House\Sip projects\Camera\tipit\build\intermediates\bundles\default\jni

如何从构建D:\Smart House\Sip projects\Camera\tipit\build\intermediates\bundles\default\jni 中排除此目录?

【问题讨论】:

标签: android gradle


【解决方案1】:

您可以在packagingOptions 中使用pickFirst 来仅使用libjniopenblas.so 文件中的一个:

你需要从File1或File2中得到正确的包名libjniopenblas.so

android {

    ...

    packagingOptions {

       // This is using the library in File1
       pickFirst 'org.bytedeco.javacpp-presets/openblas/lib/x86/libjniopenblas.so'

       ...
    }

   ...
}

但您可以使用排除来代替上述方法。首先,通过从依赖关系树中检查使用libjniopenblas.so 的依赖关系:

./gradlew app:dependencies

然后在找到它之后,将其从库中排除:

compile('com.library.name:version') {
  exclude "libjniopenblas.so"
  // or exclude the module of the library
}

【讨论】:

  • 两种变体都可以正常工作,非常感谢。现在我更知道如何查找重复的依赖项了!:)
  • 恭喜!很高兴我的回答对您有所帮助;)
猜你喜欢
  • 2014-11-12
  • 2022-12-14
  • 2015-12-11
  • 1970-01-01
  • 2012-11-19
  • 1970-01-01
  • 1970-01-01
  • 2013-03-22
  • 1970-01-01
相关资源
最近更新 更多