首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何解决“在APK META-INF中复制重复文件/*”

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

Stack Overflow用户
提问于 2015-11-26 02:02:29
回答 7查看 65.4K关注 0票数 92

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

如果库中有带有属性注释的“通知”文件,则在分发时必须包含该通知。

(例如,其中一个是在Apache 2.0下授权的)。

有多个库。当我使用gradleAndroid Studio进行构建时,我获得了以下构建错误:

代码语言:javascript
运行
复制
* 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

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

代码语言:javascript
运行
复制
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 Studio 0.4 Duplicate files copied in APK META-INF/LICENSE.txt

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

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

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-12-15 19:16:00

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

代码语言:javascript
运行
复制
packagingOptions {
   pickFirst  'META-INF/license.txt'
}

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

票数 47
EN

Stack Overflow用户

发布于 2016-04-13 17:11:20

将以下内容添加到相应的build.gradle文件中

代码语言:javascript
运行
复制
packagingOptions {
        exclude 'META-INF/ASL2.0'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/MANIFEST.MF'
    }
票数 32
EN

Stack Overflow用户

发布于 2016-07-18 16:24:24

我在我的应用程序中也遇到了同样的问题。您需要确保没有两次添加任何库。如果您已经遵循了firebase文档

那么您不应该在android studio中添加firebase库,即文件->项目结构->云->firebase

要在android应用程序中使用firebase,您只需执行这两个操作中的一个。

最后,清理并重新运行你的应用程序。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33923461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档