当前位置: 首页 > 知识库问答 >
问题:

如何解决“在APK Meta-INF/*中复制的重复文件”

姚实
2023-03-14

我在一个商业android应用程序工作。我还使用了一些在不同许可类型下许可的库,其中一些声明如下:

(例如,其中一个是在Apache License2.0下获得许可的)。

不止一个图书馆。当我使用gradle或Android Studio进行构建时,我会得到以下构建错误:

* What went wrong:
Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/license.txt

到目前为止,我在internet和stackoverflow上找到的答案建议,通过在build.gradle文件中添加以下内容,从打包中删除license.txt(请注意。txt或其他可能会干扰的文件):

packagingOptions {
    exclude 'META-INF/DEPENDENCIES.txt'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/dependencies.txt'
    exclude 'META-INF/LGPL2.1'
}

我的问题:我如何从gradle添加多个与许可相关的文件(如license.txt,notice.txt等)到我的项目中,以便符合许可(技术细节:许可文本将被连接)?

共有1个答案

安轶
2023-03-14

如果只有一个使用名称为license.txt的许可证(请阅读:所有license.txt副本都是相同的),则有一个解决方案:

packagingOptions {
   pickFirst  'META-INF/license.txt'
}

除此之外,谷歌还发布了一个Gradle插件来管理依赖许可。看这里。我没有尝试过,但它看起来能够聚合每个依赖项,甚至生成一个显示所有这些许可证的活动。

 类似资料:
  • 问题内容: 我在一个商业android应用程序上工作。我还使用了一些使用不同许可类型许可的库,其中一些声明如下: 如果库中有带有归因说明的“ NOTICE”文件,则在分发时必须包括该NOTICE (例如,其中之一已获得 Apache License 2.0 的 许可 )。 有多个库。使用 gradle 或 Android Studio 进行构建时,出现以下构建错误: 到目前为止,我在Interne

  • 我在一个商业android应用程序上工作。我还在使用一些根据不同许可证类型授权的库,其中一些声明如下: 如果库中有一个带有属性注释的“通知”文件,则在分发时必须包含该通知 (例如,其中一个是Apache License 2.0许可的)。 图书馆不止一个。当我使用gradle或Android Studio进行构建时,我得到以下构建错误: 根据这些库的许可证(例如Apache许可证2.0),应该包括许

  • 错误:任务“:OpenPayAndroid:TransformResourcesWithMergeJavaResforRelease”执行失败。 com.android.build.api.transform.transformException:com.android.builder.packaging.duplicateFileException:APK Meta-INF/license文件中

  • 我将使用Spring向我的Android应用程序添加RESTful Web服务支持,如下所述https://Spring.io/guides/gs/consulting-rest-android/。 这是顶级构建。gradle配置: 我做错了什么,怎么修复?

  • 错误:任务“:app:TransformResourcesWithMergeJavaResforDebug”执行失败。 com.android.build.api.transform.transformException:com.android.builder.packaging.duplicateFileException:APK META-INF/services/com.sun.jersey

  • 问题内容: 将Studio从0.3.7更新到0.4.0后,无法编译项目。我找到了一个解决方案:复制了重复的文件(Android Studio 0.4.0) 我将项目更新为gradle0.7。+,但是我不知道接下来的字符串应该放在哪里: 我的logcat:日志 PS开发在Ubuntu 13.04中 问题答案: 将依赖项放在顶部,将放在末尾对我有用。 这是我在app文件夹中的完整。 编辑:几乎所有的O