我看到安卓4.4.2的三星盖乐世S5崩溃了
NoClassDefFoundError: android/view/ViewStructure自从我将Support Library更新到26.0.2之后,这种情况就一直在发生。现在它也在27.0.0中发生了,尽管我预计这样的问题已经在它里面解决了。我看到Crashlytics在向Google Play提交应用程序后不久就崩溃了(我正在向我的一小部分用户推出)。我不知道重现的确切步骤是什么。到目前为止,我认为这可能是应用程序启动的时候。
相关报告:
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 plugin2.3.3,Gradle3.3,Android Studio3.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)发布于 2017-11-03 00:35:32
这个问题最有可能的原因是用户不是普通用户,因为“只有在连接了hierarchyviewer / ddm的情况下才会发生这种情况”。
更多信息可以在这里找到:
发布于 2018-05-09 19:39:10
我正在从25.3.1迁移到支持lib 27.1.1的过程中(是的,人们在这里不会这么快……)在给TextInputLayouts充气的时候也面临着同样的崩溃。
经过一些调查,我们发现我们有一个自定义的LayoutInflater,它遍历整个视图层次结构,并使用Guice (可能也会影响dagger )在每个视图中注入依赖项(使用injectMembers(View))。这是必需的,因为我们有通过@Inject注入的自定义视图。
由于Guice在解析依赖项时迭代类并尝试访问它的公共方法,因此它会遇到例如TextInputLayout.dispatchProvideAutofillStructure(ViewStructure, int),这导致崩溃,因为ViewStructure在运行< API 23的设备上不可用。
这是一个例子,说明了是什么导致了我们的问题,我们还没有一个很好的解决方案,但可能我们要么摆脱了自定义视图中的注入,要么我们注释了这些视图,以便在遍历View树时只注入这些视图。
https://stackoverflow.com/questions/47073632
复制相似问题