我有一个多模块的Android应用程序,当我构建发布APK时,我得到了这个dex错误:
java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/XX/package-info;
我当然在我的所有模块中都有一个package-info
文件,它们都有相同的名称
为什么dex甚至关心package-info
文件,如何配置它来忽略它们?
注意:我 NOT 想要启用multi-dex
答案 0 :(得分:0)
尝试在build.gradle中使用android标签内的packagingOptions作为app模块。
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/license.txt'
exclude 'META-INF/LGPL2.1'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/notice.txt'
}
更多:Packaging
答案 1 :(得分:0)
解决方案是从jar文件中排除package-info
个文件。
build.gradle
个文件中使用的示例代码
java-modules :
jar {
exclude('com/**/package-info.*')
}
android-modules :
android {
sourceSets.main.java.filter.exclude 'com/**/package-info.*'
}
适用于:
3.0 Canary 5
4.1-milestone-1
3.0.0-alpha5
注意:当然,如果package-info
文件对您的版本没有贡献,则只能排除这些文件!
例如当您在package-info
文件中使用immutables style-configuration时,您无法从构建中排除文件,因为生成的文件的名称可能会更改!