2017-10-06 4 views
0

Cet accident n'apparaît que Samsung 4.4.2 version SDK et en mode (informations Crashlytics enracinées):Android: Exception fatale: java.lang.NoClassDefFoundError (4.4.2 sur Samsung)

Fatal Exception: java.lang.NoClassDefFoundError: android/graphics/drawable/Icon 
     at java.lang.Class.getDeclaredMethods(Class.java) 
     at java.lang.Class.getDeclaredMethods(Class.java:656) 
     at android.view.ViewDebug.getExportedPropertyMethods(ViewDebug.java:960) 
     at android.view.ViewDebug.exportMethods(ViewDebug.java:1047) 
     at android.view.ViewDebug.dumpViewProperties(ViewDebug.java:997) 
     at android.view.ViewDebug.dumpViewProperties(ViewDebug.java:983) 
     at android.view.ViewDebug.dumpView(ViewDebug.java:900) 
     at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:870) 
     at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867) 
     at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867) 
     at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867) 
     at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867) 
     at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867) 
     at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867) 
     at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867) 
     at android.view.ViewDebug.dump(ViewDebug.java:793) 
     at android.view.ViewDebug.dispatchCommand(ViewDebug.java:416) 
     at android.view.ViewRootImpl$W.executeCommand(ViewRootImpl.java:6258) 
     at android.view.IWindow$Stub.onTransact(IWindow.java:65) 
     at android.os.Binder.execTransact(Binder.java:404) 
     at dalvik.system.NativeStart.run(NativeStart.java) 
Caused by java.lang.ClassNotFoundException: Didn't find class "android.graphics.drawable.Icon" on path: DexPathList[[zip file "/data/app/com.xxx-1.apk", zip file "/data/data/com.xxx/code_cache/secondary-dexes/com.xxx-1.apk.classes2.zip"],nativeLibraryDirectories=[/data/app-lib/com.xxx-1, /vendor/lib, /system/lib]] 
     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:497) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:457) 
     at java.lang.Class.getDeclaredMethods(Class.java) 
     at java.lang.Class.getDeclaredMethods(Class.java:656) 
     at android.view.ViewDebug.getExportedPropertyMethods(ViewDebug.java:960) 
     at android.view.ViewDebug.exportMethods(ViewDebug.java:1047) 
     at android.view.ViewDebug.dumpViewProperties(ViewDebug.java:997) 
     at android.view.ViewDebug.dumpViewProperties(ViewDebug.java:983) 
     at android.view.ViewDebug.dumpView(ViewDebug.java:900) 
     at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:870) 
     at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867) 
     at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867) 
     at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867) 
     at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867) 
     at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867) 
     at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867) 
     at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867) 
     at android.view.ViewDebug.dump(ViewDebug.java:793) 
     at android.view.ViewDebug.dispatchCommand(ViewDebug.java:416) 
     at android.view.ViewRootImpl$W.executeCommand(ViewRootImpl.java:6258) 
     at android.view.IWindow$Stub.onTransact(IWindow.java:65) 
     at android.os.Binder.execTransact(Binder.java:404) 
     at dalvik.system.NativeStart.run(NativeStart.java) 

je peux Je ne comprends pas pourquoi. Mon projet est correctement configuré avec la notion Dex:

Dans le fichier Gradle:

defaultConfig { 

    minSdkVersion 19 // Min SDK supported by this app (= KITKAT) 
    targetSdkVersion 26 // SDK dedicated for this app 

    // Enabling multidex support. 
    multiDexEnabled true 

    ... 

dependencies { 
    implementation fileTree(include: ['*.jar'], dir: 'libs') 

    // https://developer.android.com/studio/build/multidex.html 
    implementation 'com.android.support:multidex:1.0.2' 

    ... 

Et My App étend MultiDexApp:

public class MyApplication extends MultiDexApplication { ... 

Avez-vous des explications sur cet accident?

Merci beaucoup les gars très

+1

(pas une solution, opinion personnelle) S'il y a un seul incident d'un accident qui est arrivé une fois sur un seul périphérique, où vous ne pouvez pas remonter le problème à une source racine dans votre code, n'y faites pas attention. vous ne pouvez probablement pas le réparer – Zoe

+1

avez-vous ajouté MultiDex.install (this); dans oncreate() de votre MyApplication? –

+0

@SudheeshR bien sûr parce que j'étend la classe MultiDexApplication – anthony

Répondre

0

Multidex travaille très instable avant l'Android 5.0. Je ne peux pas l'exécuter correctement pour 2 mes projets. Essayez de mettre à jour tous les outils de construction à la dernière version et Désactiver l'exécution instantanée. Par exemple, certains libraris ne prennent pas en charge multidex - https://issuetracker.google.com/issues/63999442

1

J'ai rencontré la même erreur dans Xiaomi Device avec Android 4.4. Vous pouvez résoudre le problème en ajoutant le multidex dans attachBaseContext() et l'application simple:

public class MyApplication extends Application { 

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

} 

Ensuite, ajoutez le code suivant à votre application build.gradle:

android { 

    ... 

    dexOptions { 
     jumboMode true 
     javaMaxHeapSize "4g" 
    } 
    ... 
} 

Je l'ai testé le code sur Android 4.1 , 4.4, 5.0 et 6.0