web-dev-qa-db-fra.com

Erreur: impossible d'adapter les classes demandées dans un fichier dex unique. Essayez de fournir une liste main-dex # méthodes: 72477> 65536

Je veux ajouter des services de localisation fusionnés, mais cela indique une erreur . Aidez-moi. 

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 26
    buildToolsVersion "27.0.1"
    defaultConfig {
        applicationId "com.example.adil.bloodbankapplication"
        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')
    compile 'com.Android.support:appcompat-v7:26.1.0'
    compile 'com.Android.support.constraint:constraint-layout:1.0.2'
    compile 'com.google.firebase:firebase-auth:11.8.0'
    compile 'com.google.firebase:firebase-database:11.8.0'
    compile 'com.Android.support:support-v4:26.1.0'
    compile 'junit:junit:4.12'
    compile 'com.Android.support:design:26.1.0'
    compile 'com.github.joielechong:countrycodepicker:2.1.5'
    compile 'com.jaredrummler:material-spinner:1.2.4'
    compile 'hanks.xyz:htextview-library:0.1.5'
    compile 'com.firebaseui:firebase-ui-database:1.2.0'
    compile 'com.google.Android.gms:play-services:11.8.0'
}


apply plugin: 'com.google.gms.google-services'
91

Aucune des réponses qu’ils vous ont données n’était exhaustive… Le problème réside dans le Multidex… .. Vous devez ajouter la bibliothèque dans la palette d'applications: 

implementation 'com.Android.support:multidex:1.0.3'

Ensuite, ajoutez le paramètre defaultConfig du dégradé d'application:

multiDexEnabled true

Votre application doit être du type Multidex ... vous devez l'écrire dans le manifeste:

Android:name=".MyApplication"

"MyApplication" doit être soit la classe Multidex, soit l'extension.

125
AlexPad

J'ai résolu mon problème avec la solution ci-dessous:

Dans le fichier de construction Gradle, ajoutez une dépendance:

implémentation 'com.Android.support:multidex:1.0.3'

Et puis dans la section "defaultConfig", ajoutez:

multiDexEnabled true

61
Bofeng

Vous pouvez suivre ceci .

Les versions de la plate-forme antérieures à Android 5.0 (API de niveau 21) utilisent le runtime Dalvik pour exécuter le code d'application. Par défaut, Dalvik limite les applications à un seul fichier bytecode classes.dex par APK. Afin de contourner cette limitation, vous pouvez ajouter la bibliothèque de support multidex à votre projet:

dependencies {
  implementation 'com.Android.support:multidex:1.0.3'
}

Si votre minSdkVersion est défini sur 21 ou plus, il vous suffit de définir multiDexEnabled sur true dans votre fichier build.gradle au niveau du module, comme indiqué ci-après:

Android {
    defaultConfig {
        ...
        minSdkVersion 21 
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}
18
rize

Salut le problème est ici le supprimer

compile 'com.google.Android.gms:play-services:11.8.0'

pourquoi?

Remarque: N'utilisez pas la cible des services de jeu combinés. Il apporte des dizaines de bibliothèques, gonflant votre application. Au lieu de cela, spécifiez uniquement les API de services Google Play spécifiques utilisées par votre application.

Et utilisez ce dont vous avez besoin. https://developers.google.com/Android/guides/setup

Comme pour le service de localisation

com.google.Android.gms:play-services-location:11.8.0

Pour la messagerie en nuage

com.google.Android.gms:play-services-gcm:11.8.0
16
Pankaj Kant Patel

Si vous construisez DEBUG APK , ajoutez simplement:

debug {
            multiDexEnabled true
        }

à l'intérieur buildTypes

et si vous construisez RELEASE APK , ajoutez multiDexEnabled true dans release block as-

release {
                ...
                multiDexEnabled true
                ...
        }
12
Raj Yadav

Dans le fichier de construction Gradle, ajoutez une dépendance:

implementation 'com.Android.support:multidex:1.0.2'

ou

implementation 'com.Android.support:multidex:1.0.3'

ou

implementation 'com.Android.support:multidex:2.0.0'

Et puis dans la section "defaultConfig", ajoutez:

multiDexEnabled true

Sous targetSdkVersion

   minSdkVersion 17
    targetSdkVersion 27
    multiDexEnabled true

Maintenant si vous rencontrez cette erreur

Erreur: Échec de la résolution: Fichier ouvert multidex-instrumentation

Vous devez changer votre grade en 3.0.1

        classpath 'com.Android.tools.build:gradle:3.0.1'

Et mettez le code suivant dans le fichier gradle-wrapper.properties

distributionUrl = https: //services.gradle.org/distributions/gradle-4.1-all.Zip

Finalement

ajouter la classe Applition dans le projet et l'introduire dans le Manifeste Android Ce qui s'étend de MultiDexApplication 

public class App extends MultiDexApplication {

@Override
public void onCreate( ) {
    super.onCreate( );
}

}

Exécutez d'abord le projet pour créer une erreur, puis nettoyez le projet.

Enfin, relancez le projet et profitez-en 

8
younes

Vous avez trop de méthodes à compter . Le fichier dex Android a une limite de 65 536 méthodes que vous pouvez utiliser.

Pour commencer, si vous n'avez pas besoin de toutes les API de Google Play Services et de leur emplacement, remplacez

compile 'com.google.Android.gms:play-services:11.8.0'

avec

compile 'com.google.Android.gms:play-services-location:11.8.0'

Vous pouvez vous référer à cette page pour savoir comment l'éviter ou au besoin en autoriser plus: https://developer.Android.com/studio/build/multidex.html

8
Raz

Si vous utilisez minifyEnabled avec Proguard, vous n'aurez probablement pas besoin d'activer le multi-dex. Je conviens avec MG Developer que vous devriez essayer d'éviter le multi-dex si possible. Ma solution était d'activer le multi-dex uniquement pour les versions de débogage. minifyEnabled résout le problème pour les versions release

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
    }
    debug {
        // getting error: Cannot fit requested classes in a single dex file.  # methods: 65537 > 65536
        // https://developer.Android.com/studio/build/multidex
        // minifyEnabled true (used with release) will fix this by getting rid of unused method calls, but this will hide debugging info on crash
        multiDexEnabled true
    }
}
6
Ernie Thomason

Je ne sais pas pourquoi, c'est peut-être parce que je développe dans Kotlin mais pour corriger cette erreur .__, je dois enfin créer une classe qui étend MultiDexApplication comme ceci:

class MyApplication : MultiDexApplication() {
}

et dans mon Manifest.xml je dois définir 

<application
        ...
        Android:name=".MyApplication">

pour ne pas confondre qui que ce soit, je fais aussi:

multiDexEnabled true
implementation 'com.Android.support:multidex:1.0.3'

pour androidx, cela fonctionne aussi pour moi:

implementation 'androidx.multidex:multidex:2.0.0'

...

<application Android:name="Android.support.multidex.MultiDexApplication"> 

ne fonctionne pas pour moi

6
Boe-Dev

Tout ce que je devais faire était de définir la version minimale du SDK sur 21 dans Fichier> Structure du projet> Application> Arômes

5
Will Buffington

J'ai rencontré cette erreur deux fois et la solution est la suivante: Vérifiez votre fichier de classe d'application pour voir votre SDK cible. S'il est supérieur ou égal à 20, ajoutez simplement une ligne à votre defaultconfig { multiDexEnabled true } 

Sinon, si votre targetSDK est inférieur à 20, ajoutez la ligne à votre defaultConfig et ajoutez également une dépendance. 

implementation 'com.Android.support:multidex:1.0.3'.

Vérifiez ce lien pour plus.

https://developer.Android.com/studio/build/multidex#mdex-gradle

4
Mpwanyi Samuel
multiDexEnabled true

S'il vous plaît essayez d'ajouter cela dans votre application defaultConfig {}. Cela m'aide à résoudre le problème

3
user2173696

L'utilisation du support multidex devrait être le dernier recours. Par défaut, Gradle Build collectera une tonne de dépendances transitives pour votre APK. Comme recommandé dans Google Developers Docs , commencez par tenter de supprimer les dépendances inutiles de votre projet.

À l’aide de la ligne de commande, accédez à Android Racine de projets. Vous pouvez obtenir l’arbre de dépendance à la compilation comme suit.

gradlew app:dependencies --configuration debugCompileClasspath

Vous pouvez obtenir la liste complète de l'arbre de dépendance

gradlew app:dependencies

enter image description here

Supprimez ensuite les dépendances inutiles ou transitives de votre application build.gradle. Par exemple, si votre application utilise une dépendance appelée "com.google.api-client", vous pouvez exclure les bibliothèques/modules dont vous n'avez pas besoin.

implementation ('com.google.api-client:google-api-client-Android:1.28.0'){
   exclude group: 'org.Apache.httpcomponents'
   exclude group: 'com.google.guava'
   exclude group: 'com.fasterxml.jackson.core'
   }

Puis dans Android Studio Sélectionnez Générer> Analyser APK ... Sélectionnez le fichier release/debug APK pour afficher le contenu. Cela vous donnera les méthodes et les références comptent comme suit.

Analyze APK

2
MG Developer

Pour les projets flottants, vous pouvez également résoudre ce problème.

ouvrez votre\Android\app\build.gradle

vous devriez avoir ce qui suit:

Android {
    defaultConfig {
        ...
        minSdkVersion 16
        targetSdkVersion 28

    }

}

Si votre minSdkVersion est défini sur 21 ou supérieur, il vous suffit de définir multiDexEnabled sur true dans la configuration par défaut. Comme ça

Android {
    defaultConfig {
        ...
        minSdkVersion 16
        targetSdkVersion 28
        multiDexEnabled true 

    }

}

si votre minSdkVersion a la valeur 20 ou inférieure, ajoutez multiDexEnabled true à la commande defaultConfig.

Et définir la mise en œuvre

dependencies {
  implementation 'com.Android.support:multidex:1.0.3'
}

A la fin, vous devriez avoir:

Android {
    defaultConfig {
        ...
        minSdkVersion 16
        targetSdkVersion 28
        multiDexEnabled true  // added this
    }

}

dependencies {
  implementation 'com.Android.support:multidex:1.0.3'
}

Pour plus d'informations, lisez ceci: https://developer.Android.com/studio/build/multidex

2
Richardd

Dans la construction: app

apply plugin: 'com.Android.application'
Android {
compileSdkVersion 28
defaultConfig {
    applicationId "com.proyecto.marketdillo"
    minSdkVersion 14
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-Android-optimize.txt'), 'proguard-rules.pro'
    }
  }
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.Android.support:appcompat-v7:28.0.0-rc02'
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.Android.support.constraint:constraint-layout:1.1.3'
implementation 'com.Android.support:support-v4:28.0.0-rc02'
implementation 'com.Android.support:design:28.0.0-rc02'
implementation 'com.google.firebase:firebase-auth:16.1.0'
implementation 'com.squareup.picasso:picasso:2.5.2'
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'
implementation 'com.google.firebase:firebase-firestore:17.1.5'
implementation 'com.Android.support:multidex:1.0.3'
}
apply plugin: 'com.google.gms.google-services'
2
Sebastián Giraldo
Android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.dev.khamsat"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "2.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
0
Mohamed Slimane

fais juste ça dans 

build.gradle

(module:app)
Android {

        multiDexEnabled 'true'
    enter code here

    }

et 

dependencies {
implementation 'com.Android.support:multidex:1.0.3'
} 
0
Saif Khan