Erro de vários arquivos dex ao migrar para o cliente SDK de novos locais


-1

Estou adotando a nova atualização do google Places sdk no meu aplicativo. Eu uso a versão abaixo. Mas eu tenho problema com isso. Eu não tenho nenhuma pista se qual é a causa do problema. Eu não sei o que é FinalizableReferenceQueue mencionado no erro.

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

Não há erro na construção do projeto. O erro só irá mostrar quando eu executar o projeto. Estou usando o Android Studio.

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

Você pode por favor postar uma lista das outras dependências no seu arquivo gradle?
amuramoto

Oi @amuramoto, finalmente encontrei a causa do problema. Obrigado. Abaixo está minha resposta.
donmj

Respostas:


1

Após tentativa e erro, comentando uma dependência de cada vez, finalmente encontrei o problema.

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

No caso de alguém se deparar com este problema, eu vou oferecer um pouco mais de explicação ...

A causa subjacente é que o projeto está pré-compilando o DroidFu como um JAR e o incluindo como uma dependência, que empacota algumas classes do Guava sem rotular novamente o caminho do pacote, levando a conflitos de versão com dependências do Guava no lib do SDK do Places.

Queria observar isso, pois poderia ser um problema em outros projetos que dependem do Guava.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.