Помилка декількох файлів dex при переході до клієнта SDK для нових місць


-1

Я приймаю нове оновлення sdk Google Places у моєму додатку. Я використовую версію нижче. Але у мене є проблеми з цим. У мене немає жодного поняття, що є причиною проблеми. Я не знаю, що таке FinalizableReferenceQueue, згадані в помилці.

dependencies {
  implementation 'com.google.android.libraries.places:places:1.0.0'
}

Немає помилки при створенні проекту. Помилка відображатиметься лише після запуску проекту. Я використовую Android Studio.

Multiple dex files define Lcom/google/common/base/FinalizableReferenceQueue;

Чи можете ви надіслати список інших залежностей у файлі gradle?
amuramoto

Привіт @amuramoto, я нарешті знайшов причину проблеми. Дякую. Нижче наводиться моя відповідь.
donmj

Відповіді:


1

Після проб і помилок, коментуючи одну залежність за один раз, я нарешті знайшов проблему.

apply plugin: 'com.android.application'

android {

compileSdkVersion 26
useLibrary 'org.apache.http.legacy'

defaultConfig {
    applicationId "xxx.com.xxx"
    minSdkVersion 15
    targetSdkVersion 26
    versionCode 201811141
    versionName "2018.11.14.1"
    multiDexEnabled true
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
 }
}

dependencies {
implementation 'com.google.android.libraries.places:places:1.0.0'
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.google.maps.android:android-maps-utils:0.4+' 
implementation files('libs/acra-4.5.0.jar')
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.6.0'
implementation 'com.squareup.okhttp3:okhttp:3.6.0'
implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
implementation 'com.android.support:cardview-v7:26.+'
implementation 'com.android.support:recyclerview-v7:26.+'
implementation 'com.android.support:design:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
// App's dependencies, including test
implementation 'com.android.support:support-annotations:27.1.1'
implementation 'org.apache.httpcomponents:httpcore:4.4.1'
implementation 'com.toptoche.searchablespinner:searchablespinnerlibrary:1.3.1'
implementation project(':aFileChooser')
}

//This are all the libraries that I commented to fixed the issue.
//implementation fileTree(include: ['*.jar'], dir: 'libs')//this will give mutidex error
//implementation files('libs/droid-fu-1.0-SNAPSHOT.jar')
//implementation files('libs/android-async-http-1.4.9.jar')
//compile 'com.squareup.retrofit2:converter-scalars:2.0.0'
//implementation 'cz.msebera.android:httpclient:4.3.6' //this will give error if use

0

У випадку, якщо хтось інший потрапить на цю проблему, я запропоную трохи більше пояснення ...

Основною причиною є те, що проект попередньо компілює DroidFu як JAR і включає його як залежність, яка пакує кілька класів Guava, не переназначаючи шлях пакета, що призводить до конфліктів версій із залежностями Guava у бібліотеці SDK Places.

Хотілося відзначити це, оскільки це може бути проблемою в інших проектах, які спираються на гуаву.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.