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;
donmj
fonte
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
donmj
fonte
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.

amuramoto
fonte