Bisher habe ich diesen Fehler nur für einen Benutzer erhalten, der ein gerootetes Telefon verwendet (SM-G900R7 Android 4.4.2). Der Fehler ist wie folgt:
Fatal Exception: java.lang.NoClassDefFoundError: android/graphics/drawable/Icon
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:870)
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.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)
Ich benutze niemals android.graphics.drawable.Icon in meinem Code, alle Verwendungen stammen von android.support.v4.graphics.drawable.IconCompat
und ich benutze diese Klasse auch nie in meinem Code ...
Übrigens ist meine Support-Bibliothek version 26.0.0, my minSdkVersion is 15 targetSdkVersion is 26.
Vielen Dank
Antworten:
Aktualisieren
Das Problem wurde in der Support-Bibliothek 27.0.0 behoben. Wenn Sie aktualisieren, vergessen Sie nicht, auch zu ändern
compileSdkVersion 27
.Was ist los?
Samsung-Geräte mit Android 4.4 stürzen auf diese Weise ab, wenn Klassenerweiterungen
View
Methoden definieren, die Parameter von Typen zurückgeben oder annehmen, die sich nicht im Klassenpfad befinden.Beginnend mit der Support Library Version 25.4.0
AppCompatImageView
undAppCompatImageButton
überschreibt diesetImageIcon(Icon)
Methode falsch . SeitIcon
Einführung der Klasse in API 23 stürzt die App auf Samsung-Geräten mit API 19 ab.Ähnliches passiert, wenn Sie versuchen, zu überschreiben
View.onApplyWindowInsets(WindowInsets)
.Problemumgehung für die Support-Bibliothek 26.1.0
Bis dies auf offizielle Weise behoben wird.Wenn Sie mit einer älteren Version der Support-Bibliothek nicht weiterkommen, habe ich eine modifizierte Version erstellt, in derappcompat-v7
allesetImageIcon
Methodenspuren entfernt werden. Dies bedeutet, dass es auf einem Samsung mit Android 4.4 nicht abstürzt.Fügen Sie dies am Ende des build.gradle Ihrer App ein:
Dieser Code ersetzt die
appcompat-v7
Abhängigkeit durch das beschriebene modifizierte Artefakt.Derzeit ist die einzige unterstützte Version des Fixes 26.1.0.
Warnung: Verstehen Sie den Code vor dem Einfügen und seien Sie immer vorsichtig, wenn Sie Code aus unbekannten Quellen erhalten!
quelle
Dieses Problem wurde behoben in der Support-Bibliothek 27.0.0 behoben:
Android Gradle Plugin 3.x:
Android Gradle Plugin 2.x:
Beachten Sie, dass Sie auch mit SDK Level 27 kompilieren müssen.
quelle
Dieser Absturz bezog sich auf die Version 25.4.0 der Support-Bibliothek.
Verwenden Sie 25.3.1 Version .
Ersetzen
Mit:
quelle
compileSdkVersion 25
gesperrt sind, dass seit 25.4.0 keine Android O-APIs und keine Funktionen der Unterstützungsbibliothek eingeführt wurden (z. B. Tönen von Bildansichten und Vektorpfad-Morphing-Backport). Hier ist das Änderungsprotokoll der Support-Bibliothek. Developer.android.com/topic/libraries/support-library/…Es gibt 2 Möglichkeiten:
quelle