Es gibt ein Problem mit der Android Appcompat v7-Bibliothek auf Samsung-Geräten mit Android 4.2. Ich bekomme immer wieder Abstürze mit dem folgenden Stack-Trace in meiner Entwicklerkonsole:
java.lang.NoClassDefFoundError: android.support.v7.internal.view.menu.MenuBuilder
at android.support.v7.widget.PopupMenu.<init>(PopupMenu.java:66)
at com.[my-package-name].CustomActivity$5.onClick(CustomActivity.java:215)
at android.view.View.performClick(View.java:4222)
at android.view.View$PerformClick.run(View.java:17620)
at android.os.Handler.handleCallback(Handler.java:800)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5391)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
Dies ist Zeile 215 von CustomActivity.java:
PopupMenu popup = new PopupMenu(CustomActivity.this, mImageViewMenu);
Die Abstürze kommen von einer Reihe von Geräten, aber immer von Samsung und immer von Android 4.2.
Eine schnelle Websuche lässt mich glauben, dass viele Menschen das gleiche Problem haben. Einige der Schritte, die ich versucht habe, um das Problem zu lösen, sind:
- Überprüfen Sie die Eigenschaften des Android-Projekts und stellen Sie sicher, dass die Appcompat-Bibliothek ordnungsgemäß hinzugefügt wurde.
- Überprüfen Sie die Projekteigenschaften für Java Build Path Order und Export, stellen Sie sicher, dass Android Dependencies und Android Private Libraries aktiviert sind.
- Bestätigen Sie, dass die Klasse in der Bibliothek enthalten ist (android.support.v7.internal.view.menu.MenuBuilder).
- Bestätigen Sie, dass sich R.java im Verzeichnis gen für android.support.v7.appcompat befindet.
- Vergewissern Sie sich, dass das AppCompat-Thema in der Aktivität Manifest.xml enthalten ist.
- Projekt reinigen und neu erstellen.
Trotz dieser Schritte und obwohl es auf allen anderen Geräten und Android-Versionen funktioniert, werden die Absturzberichte immer noch angezeigt.