如何解决“在APK META-INF / *中复制的重复文件”
我正在一个商业Android应用程序工作。我还使用一些以不同许可证类型许可的库,其中一些库声明如下:
如果库有一个带有归属说明的“通知”文件,则在分发时必须包含该声明
(例如,其中之一是在Apache许可证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
到目前为止,我在互联网上找到的答案和stackoverflow建议通过向文件添加以下内容,从打包中删除许可证.txt(注意.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'
}
例如,请参阅:Android Studio 0.4 在APK META-INF / LICENSE中复制的重复文件.txt
根据这些库的许可证(例如Apache许可证2.0),应包含许可证和通知文件。
我的问题:如何将多个与许可相关的文件(如许可证.txt、通知.txt等)从 gradle 添加到我的项目中,以便与许可证兼容(技术细节:许可证文本将被串联)?