【发布时间】:2018-04-14 21:05:31
【问题描述】:
我看到搭载 Android 4.4.2 的三星 Galaxy S5 发生崩溃
NoClassDefFoundError: android/view/ViewStructure
自从我将支持库更新到 26.0.2 后,这种情况就一直在发生。现在它也发生在 27.0.0 上,尽管我预计这些问题已经在其中得到解决。在将应用程序提交到 Google Play 后不久,我在 Crashlytics 中看到了一次崩溃(我正在向一小部分用户推出)。我不知道重现的确切步骤是什么。到目前为止,我认为这可能是应用程序启动的时间。
相关报道:
java.lang.NoClassDefFoundError: android/graphics/drawable/Icon
ViewDebug.getExportedPropertyMethods java.lang.NoClassDefFound android/graphics/drawable/Icon
我正在使用支持库 27.0.0、compileSdkVersion 27、targetSdkVersion 25、buildToolsVersion '26.0.2'、android 插件 2.3.3、gradle 3.3、Android Studio 3.0。 (我猜这个问题与旧版本的 gradle 和插件无关?...)
我可以看到 ViewStructure 在支持库中使用:
android.support.design.widget.TextInputLayout
android.support.design.testutils.ViewStructureImpl
但是,我没有在我的项目中的任何地方使用 ViewStructure。
Fatal Exception: java.lang.NoClassDefFoundError: android/view/ViewStructure
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:855)
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.view.ViewStructure" on path: DexPathList[[zip file "/data/app/package.name-1.apk"],nativeLibraryDirectories=[/data/app-lib/package.name-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:855)
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)
【问题讨论】:
-
你在做什么导致崩溃?
-
我用这个信息编辑了这个问题。在我推出后不久,我在 Crashlytics 中遇到了一次崩溃(针对我的一小部分用户群),我不知道重现的确切步骤是什么。到目前为止,我认为它可能是在应用启动时。
-
堆栈跟踪看起来像是来自 Layout Inspector 等实用程序的东西。
ViewStructure是在 Android 6.0 中添加的。 -
@CommonsWare 我也这么认为。出于某种原因,我脑海中闪过的要么是高级用户在我的应用程序上尝试奇怪的东西,要么是 Google 进行自动化测试/检查。不确定。很快我会增加推广百分比,如果有什么有趣的事情,我会分享。
-
@fada21,在将新版本上传到 Google Play 开发控制台后始终保持相同。我猜,它来自预发布测试设备。希望,我们可以忽略它。
标签: android android-support-library classnotfoundexception android-8.0-oreo samsung-galaxy