如何从 dex 中排除 package-info.java 文件?
How to exclude package-info.java files from dex?
我有一个多模块 Android 应用程序,当我构建发布 APK 时,我收到此 dex 错误:
java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/XX/package-info;
当然,我的所有模块中都有一个 package-info
文件,它们都具有相同的名称。
为什么 dex 甚至关心 package-info
个文件,我如何配置它以忽略它们?
注意:我不想要启用 multi-dex
尝试在应用模块 build.gradle 中的 android 标签内使用 packagingOptions。
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
解决方案是从 jar 文件中排除 package-info
文件。
在 build.gradle
个文件中使用的示例代码
对于java-模块:
jar {
exclude('com/**/package-info.*')
}
对于android-模块:
android {
sourceSets.main.java.filter.exclude 'com/**/package-info.*'
}
适用于:
- Android工作室
3.0 Canary 5
- Gradle
4.1-milestone-1
- Android gradle 插件:
3.0.0-alpha5
注意:如果 package-info
文件对您的构建没有贡献,您当然可以只排除它们!
例如当您在 package-info
文件中使用 immutables style-configuration 时,您不能从构建中排除这些文件,因为生成的文件的名称可能会改变!
我有一个多模块 Android 应用程序,当我构建发布 APK 时,我收到此 dex 错误:
java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/XX/package-info;
当然,我的所有模块中都有一个 package-info
文件,它们都具有相同的名称。
为什么 dex 甚至关心 package-info
个文件,我如何配置它以忽略它们?
注意:我不想要启用 multi-dex
尝试在应用模块 build.gradle 中的 android 标签内使用 packagingOptions。
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
解决方案是从 jar 文件中排除 package-info
文件。
在 build.gradle
个文件中使用的示例代码
对于java-模块:
jar {
exclude('com/**/package-info.*')
}
对于android-模块:
android {
sourceSets.main.java.filter.exclude 'com/**/package-info.*'
}
适用于:
- Android工作室
3.0 Canary 5
- Gradle
4.1-milestone-1
- Android gradle 插件:
3.0.0-alpha5
注意:如果 package-info
文件对您的构建没有贡献,您当然可以只排除它们!
例如当您在 package-info
文件中使用 immutables style-configuration 时,您不能从构建中排除这些文件,因为生成的文件的名称可能会改变!