Я переношу проект из Eclipse в Android Studio и столкнулся с проблемой. У меня есть много библиотек модулей, которые являются общими для различных проектов, и некоторые из этих модулей библиотеки имеют одинаковое имя пакета, так что я в конечном итоге со следующей ошибкой:Несколько файлов dex определяют BuildConfig
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 моего приложения, но это только хуже, и строить стали жаловаться на других зависимостей ,
Есть ли способы обойти это без переименования имен пакетов?
com.foo.bar.BuildConfig не находится в AppCompatLibrary. Кроме того, как вы можете видеть из моей диаграммы зависимостей, там нет посторонних зависимостей. И, как вы можете видеть из моей диаграммы зависимостей, я не использую AppCompatLibrary. – Catherine
Эта ошибка возникает из-за наличия двух одинаковых библиотек в одной зависимости проектов @Catherine –
У меня нет двух одинаковых библиотек в моих зависимостях. Вы можете видеть это выше в моем графике зависимостей. – Catherine