【问题标题】:Duplicate files during packaging of APK, how to include several licenses in gradle打包APK时文件重复,如何在gradle中包含多个许可证
【发布时间】:2015-06-30 09:02:17
【问题描述】:

我将 2 个 Apache 许可库包含到我的 Android 应用程序中,当我尝试生成应用程序时,我遇到了臭名昭著的“打包过程中文件重复”错误。

正如很多地方 (e.g.) 所建议的那样,我第一次尝试解决的问题是排除文件,它有效并且生成了我的 apk。

然后我意识到,从 0.9.1 开始。 Gradle 包含 pickFirst 选项,用于将编译期间找到的第一个许可证放入 apk。

 packagingOptions {
    pickFirst 'META-INF/LICENSE.txt'
    pickFirst 'META-INF/NOTICE.txt'
}

问题是,Notice.txt 仅包含有关其中一个许可库的信息,而不是两者。比如Apache Commons Codec的notice.txt是:

Apache Commons 编解码器 版权所有 2002-2011 The Apache Software 基金会

本产品包含由 The Apache Software 开发的软件 基金会 (http://www.apache.org/)。

----------------------------------- --------------------------------- src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java 包含来自的测试数据 http://aspell.sourceforge.net/test/batch0.tab.

版权所有 (C) 2002 Kevin Atkinson (kevina@gnu.org)。逐字复制 并允许在任何媒体上分发整篇文章,前提是保留此通知。


和乔达时代的:

================================================ =============================== = NOTICE 文件对应于 Apache 许可证版本 2.0 的第 4d 部分 = ==================================================== ============================ 本产品包含由 Joda.org 开发的软件 (http://www.joda.org/)。

我的问题是,有没有办法自动“合并”licensenotice 文件?我认为这是一个常见问题,所以我想我不是第一个遇到它的人。

【问题讨论】:

  • Gradle 无法获取两个随机文本文件,意识到它们有共同点(通过某种方式),然后将它们组合成一个合法有效的文件(通过某种方式)。可能有一种 Gradle/Groovy 方式来连接它们;您需要与您的法律顾问讨论这是否值得。
  • 听起来您最好编写自己的 LICENSE.txt 文件 - 您仍然需要提供一个涵盖您的应用程序的文件,对吗?
  • 感谢两位cmets。是的,@Jolta 我的临时解决方案是编写我自己的许可证和通知文件,但我认为也许有一种方法可以自动执行此操作,并且如果添加了新库,则不需要手动修改我的文件。我知道这没什么大不了的,但考虑到包含 > 1 个库(可能带有许可证)的应用程序数量,我想也许有一种自动方式。

标签: android gradle


【解决方案1】:

有一个新的“合并”包装选项,看起来它可以避免这个错误,同时仍然允许你包含重要的东西,比如开源许可证。

(我不是律师,也不是 gradle 专家,因此请确保您了解如何履行自己的许可)

它将重复项合并到一个文件中。

文档:https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/PackagingOptions

例子:

 packagingOptions {
    merge 'META-INF/LICENSE.txt'
    merge 'META-INF/LICENSE'
    merge 'META-INF/NOTICE.txt'
    merge 'META-INF/NOTICE'
    merge 'META-INF/ASL2.0'
}

【讨论】:

    猜你喜欢
    • 2016-06-19
    • 2014-01-07
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    相关资源
    最近更新 更多