Java.lang.NoClassDefFoundError: com.Google.Android.gms.commun.interne.zzd


En utilisant Maps api v2 et cela fonctionne parfaitement avec 4.4 , 5.0, 5.1, 5.1.1 , 6 mais l'application se bloque lorsque j'essaie 4.2.2. J'ai fait beaucoup de recherches mais rien ne semble fonctionner. Voici le journal complet.

FATAL EXCEPTION: main
     java.lang.NoClassDefFoundError: com.google.android.gms.common.
         at com.google.android.gms.measurement.internal.zzk$zza.get(
         at com.google.android.gms.measurement.internal.zzc.zzkG(
         at com.google.android.gms.measurement.internal.zzr.<init>(
         at com.google.android.gms.measurement.internal.zzx.zzb(
         at com.google.android.gms.measurement.internal.zzt.<init>(
         at com.google.android.gms.measurement.internal.zzx.zzBQ(
         at com.google.android.gms.measurement.internal.zzt.zzaU(
         at com.google.android.gms.measurement.ource)
         at android.content.ContentProvider.attachInfo(ContentProvider
         at android.app.ActivityThread.installProvider(ActivityThread.
         at android.app.ActivityThread.installContentProviders(
         at android.app.ActivityThread.handleBindApplication(
         at android.app.ActivityThread.access$1300(ActivityThread.
         at android.app.ActivityThread$H.handleMessage(ActivityThread.
         at android.os.Handler.dispatchMessage(Handler.java:99)
         at android.os.Looper.loop(Looper.java:137)
         at android.app.ActivityThread.main(ActivityThread.java:5041)
         at java.lang.reflect.Method.invokeNative(Native Method)
         at java.lang.reflect.Method.invoke(Method.java:511)
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.
         at dalvik.system.NativeStart.main(Native Method)

Des idées?

Voici ma construction.gradle

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

repositories {
    mavenCentral()
    maven {
        url "http://dl.bintray.com/glomadrian/maven"
    }
    maven { url 'https://maven.fabric.io/public' }
}

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "py.com.roshka.billeterabancard"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.wang.avi:library:1.0.1'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.github.glomadrian:loadingballs:1.1@aar'
    compile 'com.android.support:appcompat-v7:23.1.0'
    compile 'com.google.android.gms:play-services:8.4.0'
    compile 'com.android.support:design:23.1.0'
    compile 'com.android.support:recyclerview-v7:23.1.0'
    compile 'com.squareup.okio:okio:1.0.+'
    compile 'com.squareup.okhttp:okhttp:1.5.4'
    compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
    compile 'com.squareup.retrofit:retrofit:1.8.0'
    compile 'com.pnikosis:materialish-progress:1.7'
    compile 'com.google.code.gson:gson:2.3'
    compile 'me.dm7.barcodescanner:zxing:1.8.3'
    compile 'me.dm7.barcodescanner:zbar:1.8.3'
    compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
        transitive = true;
    }
}
Author: Shirish Herwade, 2016-01-04

2 answers

3 Étapes Simples:

Étape # 1: Multidexing est une nouvelle fonctionnalité et nécessite donc une bibliothèque de support pour être compatible avec les périphériques pré-lollipop. Vous devez ajouter ce qui suit à vos dépendances de fichier gradle:

compile 'com.android.support:multidex:1.0.0'

Étape # 2: Activez également la sortie multidex dans votre fichier gradle:

android {
compileSdkVersion 21
buildToolsVersion "21.1.0"

defaultConfig {
    ...
    minSdkVersion 14
    targetSdkVersion 21
    ...

    // Enabling multidex support.
    multiDexEnabled true
   }
}

Étape # 3: Et puis ajoutez l'application de support multidex à votre manifeste:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.multidex.myapplication">
<application
    ...
    android:name="android.support.multidex.MultiDexApplication">
    ...
</application>

Remarque: Si votre application utilise déjà (étend) la classe d'application, vous pouvez remplacez la méthode attachBaseContext () et appelez MultiDex.installez (ceci) pour activer multidex. Pour plus d'informations, consultez la documentation de référence MultiDexApplication.

@Override
protected void attachBaseContext(Context context) {
    super.attachBaseContext(context);
    MultiDex.install(this);
}

Voici les mêmes instructions pour référence: https://developer.android.com/tools/building/multidex.html

 17
Author: Shirish Herwade, 2016-03-24 06:57:06

Après quelques recherches et des heures de tests, j'ai finalement réalisé qu'Android a quelque chose appelé la limite des méthodes DEX 64K. En termes simples, vous pouvez atteindre une limite lorsque vous ajoutez des bibliothèques externes à votre projet. Lorsque vous atteignez cette limite, vous devrez peut-être utiliser multidex. Personnellement, j'ai décidé de réduire le nombre de bibliothèques importées car certaines d'entre elles n'étaient pas vraiment utilisées ou nécessaires. Pour une meilleure compréhension de multidex vous devriez lire ceci,

Http://developer.android.com/tools/building/multidex.html

 4
Author: Passerin, 2016-01-12 23:52:25