我在我的Android应用程序中包含了2个Apache许可库,当我尝试生成应用程序时,我在打包过程中遇到了臭名昭着的重复文件"错误。
我的第一次解决尝试是,如许多地方(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 Codec版权所有2002-2011 Apache软件 基础
本产品包含由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)。逐字复制 如果保留此通知,则允许在任何介质中分发整篇文章。
和Joda Time&#39:
=============================================== ============================== = NOTICE文件对应于Apache License Version 2.0 =的第4d部分 ================================================== ===========================本产品包含由Joda.org开发的软件 (http://www.joda.org/)。
我的问题是,有没有办法合并"自动license
和notice
个文件?我认为这是一个常见的问题所以我想我不是第一个面对它的人。
答案 0 :(得分:0)
有一个新的“合并”包装选项看起来会避免此错误,同时仍然允许您包含重要的东西,如开源许可证。
(我不是律师而非Gradle专家,因此请确保您了解如何兑现自己的许可证)
它将重复项合并到一个文件中。
示例:
packagingOptions {
merge 'META-INF/LICENSE.txt'
merge 'META-INF/LICENSE'
merge 'META-INF/NOTICE.txt'
merge 'META-INF/NOTICE'
merge 'META-INF/ASL2.0'
}