android - ¿Cómo encuentro las dependencias que causan la duplicación de clases?
gradle (2)
Necesitas excluir el arco Jar. En primer lugar, compruebe de dónde viene el duplicado. Puede verlo si imprime su árbol de dependencias con una tarea de gradle:
./gradlew -q dependencies app:dependencies --configuration compile
Luego, excluya el tarro de arco más antiguo como lo hizo para glide pero con la exclusión correcta, por ejemplo:
implementation (''android.arch.persistence.room:runtime:1.0.0-alpha1'') {
exclude group: "android.arch.core"
}
Cuando construyo el proyecto de Android, muestra la excepción de "clase duplicada",
1 exception was raised by workers: java.lang.RuntimeException:
java.lang.RuntimeException:
Duplicate class android.arch.core.executor.DefaultTaskExecutor found in modules classes.jar (android.arch.core:core:1.0.0-alpha1) and classes.jar(android.arch.core:runtime:1.1.1)
Duplicate class android.arch.core.executor.TaskExecutor found in modules classes.jar (android.arch.core:core:1.0.0-alpha1) and classes.jar (android.arch.core:runtime:1.1.1)**
¿Cómo podría encontrar y corregir qué clase de lib utiliza duplicados en mi proyecto?
app.Gradle
android {
compileSdkVersion 28
buildToolsVersion ’28.0.3’
defaultConfig {
minSdkVersion 18
targetSdkVersion 28
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
}
dependencies {
implementation ''com.crashlytics.sdk.android:crashlytics:2.9.9''
implementation fileTree(include: [''*.jar''], dir: ''libs'')
androidTestImplementation(''com.android.support.test.espresso:espresso-core:3.0.2'', {
exclude group: ''com.android.support'', module: ''support-annotations''
})
implementation ’org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.31’api(''com.google.maps:google-maps-services:0.9.3'') {
exclude group: ''com.google.code.findbugs'', module: ''jsr305''
}
implementation ''com.android.support:appcompat-v7:28.0.0’
implementation ''com.android.support:design:28.0.0''
implementation ''com.google.android.exoplayer:exoplayer:2.8.2’
implementation ''android.arch.persistence.room:runtime:1.0.0-alpha1''
annotationProcessor ''android.arch.persistence.room:compiler:1.0.0-alpha1''
implementation ''com.jakewharton.rxbinding:rxbinding:1.0.1''
implementation ''com.google.android.gms:play-services-maps:16.1.0''
implementation ''com.google.android.gms:play-services-location:16.0.0''
implementation ''com.google.android.gms:play-services-analytics:16.0.8''
implementation ''com.google.android.gms:play-services-places:16.1.0''
implementation ''com.google.maps.android:android-maps-utils:0.5''
implementation ''com.google.firebase:firebase-messaging:17.6.0''
implementation ''com.google.firebase:firebase-core:16.0.8''
implementation ''com.google.firebase:firebase-auth:16.2.1''
implementation ''com.facebook.android:facebook-android-sdk:5.0.0''
implementation ''com.android.support:multidex:1.0.3''
implementation ''com.squareup.retrofit2:retrofit:2.5.0''
implementation ''com.squareup.okhttp3:logging-interceptor:3.14.1''
implementation ''com.squareup.retrofit2:converter-gson:2.5.0''
implementation ''com.squareup.retrofit2:adapter-rxjava:2.5.0''
implementation ''io.reactivex:rxandroid:1.2.1''
implementation ''io.reactivex:rxjava:1.3.8''
implementation ''com.artemzin.rxjava:proguard-rules:1.3.3.0''
implementation ''com.google.code.gson:gson:2.8.5''
implementation ''org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.1''
implementation ''org.eclipse.paho:org.eclipse.paho.android.service:1.1.1''
implementation ''de.hdodenhof:circleimageview:3.0.0''
implementation (''com.github.bumptech.glide:glide:4.9.0'') {
exclude group: "com.android.support"
}
annotationProcessor ''com.github.bumptech.glide:compiler:4.9.0''
implementation ''com.googlecode.libphonenumber:libphonenumber:8.10.11''
implementation project('':lib-zxing'')
implementation ''com.googlecode.mp4parser:isoparser:1.1.22''
implementation ''com.github.lassana:continuous-audiorecorder:1.3.1''
implementation ''me.leolin:ShortcutBadger:1.1.22@aar''
implementation ''com.timehop.stickyheadersrecyclerview:library:0.4.3''
implementation ''org.jsoup:jsoup:1.11.3''
testImplementation ''junit:junit:4.13-beta-2''
}
lib-zxing
android {
compileSdkVersion 28
buildToolsVersion ’28.0.3’
defaultConfig {
minSdkVersion 14
targetSdkVersion 28
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}dependencies {
api fileTree(include: [''*.jar''], dir: ''libs'')
androidTestImplementation(''com.android.support.test.espresso:espresso-core:3.0.2'', {
exclude group: ''com.android.support'', module: ''support-annotations''
})
implementation ''com.android.support:appcompat-v7:28.0.0’
testImplementation ''junit:junit:4.13-beta-2''
}
Puede usar el cuadro de diálogo Buscar en todas partes (cuadro de diálogo que se abre al presionar Mayúsculas dos veces).
Simplemente copie el nombre de la clase y péguelo en el cuadro de diálogo de búsqueda y mostrará los resultados en el menú desplegable. Puede examinar el resultado y verificar si hay entradas duplicadas. La ruta completa de la clase se mostrará junto al nombre de la clase para que pueda encontrar bibliotecas relativas y excluirlas de forma segura de cualquiera de las bibliotecas.