0

J'ai rencontré une classe NoClassDefFoundError sur mes classes statiques et anonymes imbriquées dans mon application. Le fait est que cela n'arrive pas sur tous les appareils que j'ai testés. J'ai lu beaucoup de stackoverflow et google essayant de résoudre ce problème, mais je n'arrive toujours pas à comprendre pourquoi ça se passe sur Zenphone 5 et Galaxy Tab E (Android 4.4.4) mais n'arrive jamais sur Nexus 7/10 ou sur un autre appareil avec Android 5+.NoClassDefFoundError sur les classes imbriquées anonymes et statiques

J'ai également essayé de déplacer toutes les classes imbriquées hors de la classe de base dans leurs propres fichiers .java, et cela aide, mais je veux comprendre le problème de base et le corriger.

post-scriptum est possible, que ce problème lié à l'appui multidex?

UPD 1

LogCat:

02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/CrashlyticsCore: Failed to execute task. 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/CrashlyticsCore: java.util.concurrent.TimeoutException 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/CrashlyticsCore: at java.util.concurrent.FutureTask.get(FutureTask.java:173) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/CrashlyticsCore: at com.crashlytics.android.core.CrashlyticsExecutorServiceWrapper.executeSyncLoggingException(CrashlyticsExecutorServiceWrapper.java:44) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/CrashlyticsCore: at com.crashlytics.android.core.CrashlyticsUncaughtExceptionHandler.uncaughtException(CrashlyticsUncaughtExceptionHandler.java:245) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/CrashlyticsCore: at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/CrashlyticsCore: at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/CrashlyticsCore: at dalvik.system.NativeStart.main(Native Method) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: FATAL EXCEPTION: main 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{cinamaker.nlt.com.cinamaker/cinamaker.nlt.com.cinamaker.activity.MainActivity}: android.view.InflateException: Binary XML file line #111: Error inflating class cinamaker.nlt.com.cinamaker.widget.HorizontalListView.HorizontalListView 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2342) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread.access$600(ActivityThread.java:148) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.os.Looper.loop(Looper.java:150) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5390) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:525) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #111: Error inflating class cinamaker.nlt.com.cinamaker.widget.HorizontalListView.HorizontalListView 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.createView(LayoutInflater.java:620) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:268) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.Activity.setContentView(Activity.java:1968) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at cinamaker.nlt.com.cinamaker.activity.MainActivity.onCreate(MainActivity.java:65) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.Activity.performCreate(Activity.java:5303) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2296) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread.access$600(ActivityThread.java:148)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.os.Looper.loop(Looper.java:150)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5390)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:525)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: Caused by: java.lang.reflect.InvocationTargetException 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at java.lang.reflect.Constructor.constructNative(Native Method) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.createView(LayoutInflater.java:594) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:492)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:397)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:353)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:268)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.Activity.setContentView(Activity.java:1968)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at cinamaker.nlt.com.cinamaker.activity.MainActivity.onCreate(MainActivity.java:65)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.Activity.performCreate(Activity.java:5303)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2296)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread.access$600(ActivityThread.java:148)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.os.Looper.loop(Looper.java:150)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5390)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:525)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: Caused by: java.lang.NoClassDefFoundError: cinamaker.nlt.com.cinamaker.widget.HorizontalListView.HorizontalListView$2 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at cinamaker.nlt.com.cinamaker.widget.HorizontalListView.HorizontalListView.(HorizontalListView.java:365) 02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at java.lang.reflect.Constructor.constructNative(Native Method)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at java.lang.reflect.Constructor.newInstance(Constructor.java:417)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.createView(LayoutInflater.java:594)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:492)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:397)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:353)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:268)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.Activity.setContentView(Activity.java:1968)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at cinamaker.nlt.com.cinamaker.activity.MainActivity.onCreate(MainActivity.java:65)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.Activity.performCreate(Activity.java:5303)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2296)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread.access$600(ActivityThread.java:148)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.os.Looper.loop(Looper.java:150)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5390)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:525)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  02-29 17:09:43.306 28749-28749/cinamaker.nlt.com.cinamaker E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method) 

code: Je ne veux pas ajouter toute la classe ici, il est trop grand. J'ajoute seulement le problème actuellement actif.

public class HorizonatlListView { 

    ... 

    private DataSetObserver mAdapterDataObserver = new DataSetObserver() { 
    @Override 
    public void onChanged() { 
     mDataChanged = true; 

     // Clear so we can notify again as we run out of data 
     mHasNotifiedRunningLowOnData = false; 

     unpressTouchedChild(); 

     // Invalidate and request layout to force this view to completely redraw itself 
     invalidate(); 
     requestLayout(); 
    } 

    @Override 
    public void onInvalidated() { 
     // Clear so we can notify again as we run out of data 
     mHasNotifiedRunningLowOnData = false; 

     unpressTouchedChild(); 
     reset(); 

     // Invalidate and request layout to force this view to completely redraw itself 
     invalidate(); 
     requestLayout(); 
    } 
    }; 

    ... 

} 
+0

votre code postal et logcat. –

Répondre