Flo*_*ryn 91 java android gradle
我在一个商业Android应用程序工作.我还使用了一些在不同许可证类型下获得许可的库,其中一些库说明了以下内容:
如果图书馆有一份带有归属说明的"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
Run Code Online (Sandbox Code Playgroud)
我在互联网和stackoverflow上找到的答案建议从包装中删除license.txt(notice.txt或其他可能会干扰的文件),方法是添加build.gradle
以下文件:
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'
}
Run Code Online (Sandbox Code Playgroud)
请参阅示例:Android Studio 0.4在APK META-INF/LICENSE.txt中复制的重复文件
根据这些库的许可证(例如Apache License 2.0),应包含许可证和通知文件.
我的问题: 如何将与许可相关的多个文件(例如license.txt,notice.txt等)从gradle添加到我的项目中以符合许可(技术细节:许可文本将被连接)?
Mar*_*say 47
如果您只有一个使用该名称的许可证,则有一个解决方案license.txt
(读取:所有license.txt
副本相同):
packagingOptions {
pickFirst 'META-INF/license.txt'
}
Run Code Online (Sandbox Code Playgroud)
否则,谷歌还发布了一个Gradle插件来管理依赖项许可证.看到这里.我没有尝试过,但看起来它能够聚合每个依赖项,甚至生成显示所有这些许可证的活动.
Max*_*oid 32
将以下内容添加到相应的build.gradle文件中
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'
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
64774 次 |
最近记录: |