我正在将一个项目从Eclipse迁移到Android,遇到了一个问题。我有许多在不同项目之间共享的库模块,其中几个库模块具有相同的包名,因此我最终会出现以下错误:
AGPBI: {"kind":"SIMPLE","text":"com.android.dex.DexException: Multiple dex files define Lcom/foo/bar/BuildConfig;","position":{},"original":"com.android.dex.DexException: Multiple dex files define Lcom/foo/bar/BuildConfig;"}我的依赖关系很好,所以这不是问题所在:
compile - Classpath for compiling the main sources.
+--- project :project1
| +--- com.mixpanel.android:mixpanel-android:4.6.0
| \--- com.google.android.gms:play-services-gcm:7.5.0
| \--- com.google.android.gms:play-services-base:7.5.0
| \--- com.android.support:support-v4:22.0.0
| \--- com.android.support:support-annotations:22.0.0
+--- project :facebook
| \--- com.parse.bolts:bolts-android:1.1.4
+--- com.google.android.gms:play-services-location:7.5.0
| \--- com.google.android.gms:play-services-maps:7.5.0
+--- project :project2
| \--- project :project3
| \--- project :project4
| \--- project :project5
+--- project :project6
\--- project :project7但是,当我在目录中搜索BuildConfig.java时,我会得到以下结果:
./project1/build/generated/source/buildConfig/androidTest/debug/com/foo/bar/test/BuildConfig.java
./project1/build/generated/source/buildConfig/debug/com/foo/bar/BuildConfig.java
./project1/build/generated/source/buildConfig/release/com/foo/bar/BuildConfig.java
./project5/build/generated/source/buildConfig/androidTest/debug/com/foo/bar/test/BuildConfig.java
./project5/build/generated/source/buildConfig/debug/com/foo/bar/BuildConfig.java
./project5/build/generated/source/buildConfig/release/com/foo/bar/BuildConfig.java
./project4/build/generated/source/buildConfig/androidTest/debug/com/foo/bar/test/BuildConfig.java
./project4/build/generated/source/buildConfig/debug/com/foo/bar/BuildConfig.java
./project4/build/generated/source/buildConfig/release/com/foo/bar/BuildConfig.java问题似乎在于,我有几个共享名称空间的模块。有什么办法绕过这件事吗?我不想更改其他项目的名称空间。
在一个典型的货物邪教编程展示中,我尝试添加:
dexOptions {
preDexLibraries = false
}我的应用程序的build.gradle中的android块,但这只会使它变得更糟,并且构建开始抱怨其他依赖项。
除了重命名包名之外,还有其他方法吗?
发布于 2015-06-23 00:20:03
我通过更改子模块清单中的包来解决这个问题,在此之前,我的所有库都有相同的名称。
发布于 2021-01-16 18:18:10
我定义了一个图书馆项目。我把这个库项目作为对我的主项目的依赖项。BuildConfig也有同样的包裹。
图书馆项目清单
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.<companyname>.library.baseapp">主要工程
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.<companyname>.library.baseapp">我犯的错误是
baseapp_android/build/.transforms/23204dbdbf5b7208d6261a7b35e24e97/classes/classes.dex
Type com.<companyname>.library.baseapp.BuildConfig is defined multiple times: /<path>/baseapptest_android/baseapp_android/build/.transforms/23204dbdbf5b7208d6261a7b35e24e97/classes/classes.dex, /<path>/baseapptest_android/baseapp_test/build/intermediates/project_dex_archive/debug/out/com/<companyname>/library/baseapp/BuildConfig.dex
com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: /Users/jsiddharth/AndroidStudioProjects/baseapptest_android/baseapp_android/build/.transforms/23204dbdbf5b7208d6261a7b35e24e97/classes/classes.dex
com.android.tools.r8.utils.b: Type com.<companyname>.library.baseapp.BuildConfig is defined multiple times: /<path>/baseapp_android/build/.transforms/23204dbdbf5b7208d6261a7b35e24e97/classes/classes.dex, /<path>/baseapptest_android/baseapp_test/build/intermediates/project_dex_archive/debug/out/com/<companyname>/library/baseapp/BuildConfig.dex
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 我将主项目清单更改为
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.<companyname>.library.baseapp_test">而且起作用了。
https://stackoverflow.com/questions/30928881
复制相似问题