如何从dex中排除package-info.java文件?

时间:2017-03-25 12:57:05

标签: android dex package-info

我有一个多模块的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

2 个答案:

答案 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.*'
}

适用于:

  • Android Studio 3.0 Canary 5
  • Gradle 4.1-milestone-1
  • Android gradle插件:3.0.0-alpha5

注意:当然,如果package-info文件对您的版本没有贡献,则只能排除这些文件!
例如当您在package-info文件中使用immutables style-configuration时,您无法从构建中排除文件,因为生成的文件的名称可能会更改!

相关问题