当前位置: 首页 > 面试题库 >

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

楚俊迈
2023-03-14
问题内容

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

如果库中有带有归因说明的“ NOTICE”文件,则在分发时必须包括该NOTICE

(例如,其中之一已获得 Apache License 2.0许可 )。

有多个库。使用 gradleAndroid 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上找到的答案建议通过将build.gradle以下内容添加到文件中,以从包装中删除license.txt(notice.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'
}

例如,请参阅:Android Studio0.4在APKMETA-INF/LICENSE.txt中复制的重复文件

根据这些库的许可证(例如 Apache License 2.0 ),应 包括 许可证和通知文件。

我的问题: 如何从gradle中将与许可相关的多个文件(例如 license.txt , _notice.txt_等)添加到我的项目中,以便与许可兼容( 技术细节: 许可文本将串联在一起)?


问题答案:

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

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

否则,Google还发布了Gradle插件来管理依赖项许可证。看这里。我没有尝试过,但是看起来它能够聚合每个依赖项,甚至可以生成显示所有这些许可证的活动。



 类似资料:
  • 我在一个商业android应用程序工作。我还使用了一些在不同许可类型下许可的库,其中一些声明如下: (例如,其中一个是在Apache License2.0下获得许可的)。 不止一个图书馆。当我使用gradle或Android Studio进行构建时,我会得到以下构建错误: 到目前为止,我在internet和stackoverflow上找到的答案建议,通过在文件中添加以下内容,从打包中删除licen

  • 我在一个商业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