相关疑难解决方法(0)

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

我在一个商业Android应用程序工作.我还使用了一些在不同许可证类型下获得许可的库,其中一些库说明了以下内容:

如果图书馆有一份带有归属说明的"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
Run Code Online (Sandbox Code Playgroud)

我在互联网和stackoverflow上找到的答案建议从包装中删除license.txt(notice.txt或其他可能会干扰的文件),方法是添加build.gradle以下文件:

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'
}
Run Code Online (Sandbox Code Playgroud)

请参阅示例:Android Studio 0.4在APK META-INF/LICENSE.txt中复制的重复文件

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

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

java android gradle

91
推荐指数
2
解决办法
6万
查看次数

标签 统计

android ×1

gradle ×1

java ×1