【发布时间】:2014-12-26 18:01:23
【问题描述】:
我们刚刚更改了我们的应用程序以使用 appcompat-v7 support 库,以便利用支持操作栏和支持 Material 主题。使用v21.0.0 of appcompat-v7(和v21.0.0 of support-v4),我们现在看到Google Play 和Crashlytics 中的崩溃仅来自三星设备runningAndroid v4.2.2. Here is the stack trace from Google Play and the app appears to crash as soon as theactionbar` 显示和/或无效。
java.lang.NoClassDefFoundError: android.support.v7.internal.view.menu.MenuBuilder
at android.support.v7.app.ActionBarActivityDelegateBase.initializePanelMenu(ActionBarActivityDelegateBase.java:991)
at android.support.v7.app.ActionBarActivityDelegateBase.preparePanel(ActionBarActivityDelegateBase.java:1041)
at android.support.v7.app.ActionBarActivityDelegateBase.doInvalidatePanelMenu(ActionBarActivityDelegateBase.java:1259)
at android.support.v7.app.ActionBarActivityDelegateBase.access$100(ActionBarActivityDelegateBase.java:80)
at android.support.v7.app.ActionBarActivityDelegateBase$1.run(ActionBarActivityDelegateBase.java:116)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5299)
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(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
运行 v4.2.2 的其他设备和模拟器不会出现此行为。据我了解,很多 Google 应用程序已经在使用这个新版本的appcompat 来显示操作栏。如果这些应用没有报告这些设备上的崩溃,了解如何避免/修复这种情况会很有帮助。
我将此作为错误报告给 Google,但由于它是一个开发问题而被关闭。虽然我同意这可能是这种情况,但我想知道目前是否/如何有人能够使用appcompat-v7 v21.0.0 而不会在Samsung 4.2.2 devices 上崩溃。
更新:看起来 Google 至少正在考虑可能的解决方法。详情请见this。
【问题讨论】:
-
这可能是一个相关的问题,但它似乎是一个略有不同的例外。另一个问题中最近发布的一个解决方案与在操作栏中有一个微调器有关,而我没有这种情况。我只是在使用菜单项。
-
我也有这个问题。应用程序正在生产中并收到来自三星的 4.2.2 崩溃。设备
-
我的操作栏中也没有微调器,我是从运行 Android 4.2.2 的非三星设备获得的:Qmobile I9 和 Wiko(未知型号)。
-
@Devashish:第二个答案中的 proguard 解决方案对我有用。我针对受 appthwack.com 影响的三星设备进行了测试,在应用 proguard 配置后,我不再出现错误。
标签: android proguard android-appcompat samsung-mobile android-4.2-jelly-bean