我正在将一个项目从Eclipse迁移到Android Studio,遇到了问题。我有许多库模块在不同的项目之间共享,并且其中几个库模块具有相同的包名,因此我会遇到以下错误:
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块,但这只会让情况变得更糟,并且构建开始抱怨其他依赖项。
有没有其他方法可以解决这个问题,而不必重命名包名?