我在一个商业android应用程序上工作。我还使用了一些使用不同许可类型许可的库,其中一些声明如下:
如果库中有带有归因说明的“ NOTICE”文件,则在分发时必须包括该NOTICE
(例如,其中之一已获得Apache License 2.0的许可)。
有多个库。使用gradle或Android 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
到目前为止,我在Internet和stackoverflow上找到的答案建议通过将build.gradle
以下内容添加到文件中,将license.txt(notice.txt或其他可能会干扰到此的文件)从打包中删除:
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在APK META-INF / LICENSE.txt中复制的重复文件
根据这些库的许可证(例如Apache License 2.0),应包括许可证和通知文件。
我的问题: 如何从gradle中将与许可相关的多个文件(例如license.txt,notice.txt等)添加到我的项目中,以便与许可兼容(技术细节:许可文本将串联在一起)?