android - APK打包时出现重复文件,如何在gradle中包含多个license

标签 android gradle

我在我的 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 Copyright 2002-2011 The Apache Software Foundation

This product includes software developed by The Apache Software Foundation (http://www.apache.org/).

-------------------------------------------------------------------------------- src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java contains test data from http://aspell.sourceforge.net/test/batch0.tab.

Copyright (C) 2002 Kevin Atkinson (kevina@gnu.org). Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.


和 Joda Time 的:

============================================================================= = NOTICE file corresponding to section 4d of the Apache License Version 2.0 = ============================================================================= This product includes software developed by Joda.org (http://www.joda.org/).

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

最佳答案

有一个新的“合并”packagingOption,它看起来可以避免此错误,同时仍然允许您包含开源许可证等重要内容。

(我不是律师也不是 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'
}

关于android - APK打包时出现重复文件,如何在gradle中包含多个license,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31133914/

相关文章:

android - 在没有 ActionBarSherlock 的情况下更改 SearchView 中的光标颜色

android - AsyncTask 进度对话框未显示且仍在跳帧

java - 使用 gradle 发布工件(带有源代码和 javadoc)

android - Android Studio:嵌套库依赖项

android - "You cannot change private secure settings"- 如何在 Android 6 中切换铃声振动?

android - kivy有opencv或者图像处理库吗?

android - 带有可扩展 ListView 父级水平 ScrollView 子级的视频库

Android Studio 2.2更新: aligned APK (zipAlign) not generated using the new Gradle Plugin 2. 2.0

android - 为什么我的单元测试针对的是错误版本的Android?

gradle - java.net.BindException:权限被拒绝通过gradlew运行