J'ai essayé à plusieurs reprises de résoudre ce problème, mais aucune des solutions proposées dans les autres questions ne fonctionnait pour moi. Après avoir fusionné mon code avec celui de mes coéquipiers, je n'ai pas pu exécuter mon application en raison de ce bogue. J'ai nettoyé et reconstruit mon projet plusieurs fois, mais l'erreur persiste:
Erreur: L'exécution a échoué pour la tâche ': app: transformDexArchiveWithExternalLibsDexMergerForDebug' . Exception Java.lang.Runtime: Exception Java.lang.Runtime: com.Android.builder.dexing.DexArchiveMergerException: impossible de fusionner dex
J'ai essayé de corriger les avertissements de Gradle, de mettre à jour les instructions de bibliothèque de compilation de Gradle et de placer cet indicateur dans ma configuration par défaut:
multiDexEnabled true
Le seul correctif qui produisit quelque chose de différent fut le drapeau ci-dessus, qui me permettait d'exécuter l'application, mais une erreur d'exécution différente se produisit:
E/AndroidRuntime: EXCEPTION FATALE: main Processus: com.example.aaronliang.flow_v1, PID: 11780 Java.lang.RuntimeException: Impossible d'obtenir le fournisseur> com.google.firebase.provider.FirebaseInitProvider:> Java.lang.ClassNotFoundException: la classe n'a pas été trouvée> "com.google.firebase.provider.FirebaseInitProvider" sur le chemin: DexPathList [Zip> fichier "/data/app/com.example.aaronliang.flow_v1->177.apk"],nativeLibraryDirectories=[/data/app->lib/com.example.aaronliang.flow_v1-177,/vendor/lib ,/system/lib]]
Voici mes fichiers de construction actuels:
Projet construit:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.0.0'
classpath 'com.google.gms:google-services:3.1.0'
//classpath 'com.Android.tools.build:gradle:2.3.3'
//classpath 'com.google.gms:google-services:3.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
maven { url "https://maven.google.com" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
App build:
apply plugin: 'com.Android.application'
Android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
multiDexEnabled true
applicationId "com.example.aaronliang.flow_v1"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.Android.support', module: 'support-annotations'
})
compile 'com.Android.support:appcompat-v7:26.1.0'
compile 'com.Android.support.constraint:constraint-layout:1.0.2'
compile 'com.Android.volley:volley:1.0.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.google.firebase:firebase-firestore:11.6.0'
compile 'com.google.firebase:firebase-auth:11.6.0'
compile 'com.google.firebase:firebase-core:11.6.0'
compile 'com.google.Android.gms:play-services:11.6.0'
compile 'com.github.woxthebox:draglistview:1.5.0'
//compile 'com.github.PhilJay:MPAndroidChart:v3.0.2'
compile 'com.jjoe64:graphview:4.2.1'
testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.Android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '25.3.1'
}
}
}
}
Toute aide serait appréciée, car ce projet est pour bientôt!
Ok, j'ai réussi à résoudre mon problème! J'ai dû ajouter ces deux lignes:
Dans app/gradle.build:
compile 'com.Android.support:multidex:1.0.1'
Dans le fichier manifeste:
Android:name="Android.support.multidex.MultiDexApplication"
J'ai obtenu ceci de cette question:
La classe "com.google.firebase.provider.FirebaseInitProvider" n'a pas été trouvée
Votre minSdk est inférieur à 20, vous devez donc ajouter compile 'com.Android.support:multidex:1.0.1'
à votre build.gradle dependencies
. Source