Excepción grave: java.lang.NoClassDefFoundError: android.support.v7.app.AppCompatDelegateImplV23

En mi última versión, algunos de mis usuarios (menos del 0,2%) están recibiendo un bloqueo porque no se puede encontrar android.support.v7.app.AppCompatDelegateImplV23 . No puedo reproducir el problema, sólo estoy recibiendo informes sobre crashlytics. He utilizado apktool para extraer los archivos de mi apk y puedo ver AppCompatDelegateImplV23.smali allí. ¿Alguna idea de lo que podría estar pasando?

Esta es mi línea de compilación en gradle:

 compile 'com.android.support:appcompat-v7:23+' 

Esta es la excepción:

 Fatal Exception: java.lang.NoClassDefFoundError: android.support.v7.app.AppCompatDelegateImplV23 at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:133) at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:117) at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:456) at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:59) at MyActivityClass.onCreate(MyActivityClass.java:353) at android.app.Activity.performCreate(Activity.java:6248) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2437) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2544) at android.app.ActivityThread.access$900(ActivityThread.java:150) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1394) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:168) at android.app.ActivityThread.main(ActivityThread.java:5845) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687) at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:117) 

EDIT: Este es mi archivo gradle principal:

 buildscript { repositories { maven { url 'https://maven.fabric.io/public' } jcenter() // version plugin support } dependencies { classpath 'io.fabric.tools:gradle:1.+' classpath 'com.android.tools.build:gradle:1.3.1' } allprojects { repositories { jcenter() } } } apply plugin: 'com.android.application' apply plugin: 'io.fabric' apply plugin: 'com.google.gms.google-services' repositories { maven { url 'https://maven.fabric.io/public' } } android { signingConfigs { config { ...... } } compileSdkVersion 23 buildToolsVersion "23.0.1" useLibrary 'org.apache.http.legacy' productFlavors { // Define separate dev and prod product flavors. dev { // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin // to pre-dex each module and produce an APK that can be tested on // Android Lollipop without time consuming dex merging processes. minSdkVersion 21 } prod { // The actual minSdkVersion for the application. minSdkVersion 14 } } defaultConfig { applicationId "mypackage" minSdkVersion 14 targetSdkVersion 23 versionCode some number versionName "some version number" multiDexEnabled true signingConfig signingConfigs.config } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.config applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile = new File(output.outputFile.parent,"myapk.apk") } } } debug { signingConfig signingConfigs.config } } repositories { mavenCentral() mavenLocal() } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } packagingOptions { exclude 'AndroidManifest.xml' exclude 'META-INF/beans.xml' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' exclude 'META-INF/DEPENDENCIES' } productFlavors { } dexOptions { // preDexLibraries = false jumboMode = true javaMaxHeapSize "2g" //doesn't seem to be supported with multidex // incremental true } lintOptions{ disable 'MissingTranslation' disable 'ExtraTranslation' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) //multidex compile 'com.android.support:multidex:1.0.0' //support libs compile 'com.android.support:support-v4:23+' compile 'com.android.support:appcompat-v7:23+' compile 'com.android.support:cardview-v7:23+' compile 'com.android.support:design:23+' //app invites compile 'com.google.android.gms:play-services-appinvite:8+' compile 'com.google.android.gms:play-services-analytics:8+' //chromecast compile 'com.google.android.gms:play-services-cast:8+' compile 'com.android.support:mediarouter-v7:23+' //plus button compile 'com.google.android.gms:play-services-plus:8+' compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') { transitive = true; } compile 'com.github.navasmdc:MaterialDesign:1.+@aar' //material lib needs it compile 'com.nineoldandroids:library:2.4.+' compile 'com.facebook.stetho:stetho:1+' compile 'com.facebook.stetho:stetho-okhttp:1+' //debugCompile 'com.squareup.leakcanary:leakcanary-android:1+' debugCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1+' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1+' compile 'com.makeramen:dragsortadapter:1.3+' compile 'com.github.amlcurran.showcaseview:library:5.0.0' } 

EDIT: acaba de tener un nuevo informe, pero para una versión diferente de la misma clase

 Fatal Exception: java.lang.NoClassDefFoundError: android.support.v7.app.AppCompatDelegateImplV14 at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:135) at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:117) at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:456) at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:59) at MyActivity.onCreate(MyActivity.java:353) at android.app.Activity.performCreate(Activity.java:5008) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2044) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2105) at android.app.ActivityThread.access$600(ActivityThread.java:133) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1211) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4795) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) at dalvik.system.NativeStart.main(NativeStart.java) 

EDIT: Acabo de AppCompatDelegateImplV23 muchos de los informes, algunos son para AppCompatDelegateImplV23 y algunos son para AppCompatDelegateImplV14 , algunos involucrados XPosed pero la mayoría no lo hacen. La única cosa que es común a todos ellos es que son todos para teléfonos con raíces.

En primer lugar, necesitamos entender por qué se produce el error java.lang.NoClassDefFoundError :

Así que la respuesta es que cuando hay un archivo de clase de que su código depende y que está presente en tiempo de compilación, pero no se encuentra en tiempo de ejecución. Busque diferencias en su tiempo de compilación y en sus rutas de clase de tiempo de ejecución .

Así que hay algunas opciones por las que puede eliminar este error:

1) Haga que preDexLibraries sea verdadera:

  dexOptions { preDexLibraries = true jumboMode = true javaMaxHeapSize "2g" //doesn't seem to be supported with multi dex // incremental true } 

2) Puede haber el problema con el sistema de construcción incremental. Así que intenta quitar la carpeta de construcción de tu proyecto y reconstruye el proyecto O Right click on your project -> "Open module settings" -> Dependencies tab -> check if Export is checked for your library

3) Necesita hacer algo más que proporcionar soporte MultiDex .

  • MultiDexEnabled = true en el bloque defaultConfig
  • Incluya la compilación 'com.android.support:multidex:1.0.0' en sus dependencias
  • Haga que su clase de aplicación extienda MultiDexApplication en lugar de sólo Application. Como alternativa, puede llamar a MultiDex.install () en attachBaseContext () de su aplicación

Para más referencia usted puede comprobar el acoplamiento abajo que ha proporcionado una comprensión más avanzada del multi dex.

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

4) O al final puede agregar archivos jar de V7 en la carpeta libs de su proyecto y luego agregarlo a su sistema de compilación.

5) También intenta quitar los archivos jar, así como todavía incluye el com.android.support:support-v4:23 + como gradle tiene un repositorio donde descarga los tarros delcared como compilar 'compilar' com.android.support:appcompat -v7: 23+ '

Espero que esto puede darle alguna pista sobre su error.

Mi conjetura es que el problema se debe al marco xposed. En la parte inferior de la traza de pila, puede encontrar que el zygote fue iniciado por el marco xposed.

  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687) at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:117) 

Esto significa que el usuario está usando un rom Android personalizado con el marco xposed instalado. El marco se utiliza generalmente para modificar el comportamiento del código de Android (y cualquier aplicación, por supuesto) mediante la inyección de código nuevo en tiempo de ejecución.

Puede comprobar cómo funciona en: https://github.com/rovo89/XposedBridge/tree/art/app/src/main/java/de/robv/android/xposed

Puesto que el comportamiento del código se puede alterar en varios grados dependiendo de qué mods se instalan vía el marco xposed, no puedo precisar la causa exacta de su excepción. Sin embargo, si todos los rastros de la pila que tienes empezar con el XposedBrigde.main () , entonces puedo decir que su problema se debe al marco expuesto o los mods instalados a través del marco.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.