Пока я получил эту ошибку только для одного пользователя, который использует рутированный телефон (SM-G900R7 Android 4.4.2). Ошибка такая:
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)
Я никогда не использую android.graphics.drawable.Icon в своем коде, все использования взяты из, android.support.v4.graphics.drawable.IconCompat
и я также никогда не использую этот класс в своем коде ...
Кстати, моя библиотека поддержки version 26.0.0, my minSdkVersion is 15 targetSdkVersion is 26.
Спасибо
Ответы:
Обновить
Проблема исправлена в библиотеке поддержки 27.0.0. Если вы обновите, не забудьте также изменить
compileSdkVersion 27
.Что происходит?
В устройствах Samsung с Android 4.4 происходит сбой, когда расширяющиеся классы
View
определяют методы, которые возвращают или принимают параметры типов, которых нет в пути к классам.Начиная с версии библиотеки поддержки 25.4.0
AppCompatImageView
иAppCompatImageButton
неправильно переопределяетsetImageIcon(Icon)
метод. ПосколькуIcon
класс был представлен в API 23, приложение вылетает на устройствах Samsung с API 19.То же самое происходит, когда вы пытаетесь переопределить
View.onApplyWindowInsets(WindowInsets)
.Обходной путь для библиотеки поддержки 26.1.0
Пока это не будет исправлено официальным образом.Если вы застряли в более старой версии библиотеки поддержки, я сделал модифицированную версию, вappcompat-v7
которой все следыsetImageIcon
методов удалены. Это означает, что он не выйдет из строя на Samsung с Android 4.4.Поместите это в конец build.gradle вашего приложения:
Этот код заменит
appcompat-v7
зависимость описанным измененным артефактом.В настоящее время единственная поддерживаемая версия исправления - 26.1.0.
Предупреждение: изучите код перед копированием и всегда будьте осторожны при получении кода из неизвестных источников!
источник
Эта проблема решена в библиотеке поддержки 27.0.0:
Плагин Android Gradle 3.x:
Плагин Android Gradle 2.x:
Обратите внимание, что вам также потребуется выполнить компиляцию с использованием SDK уровня 27.
источник
Этот сбой связан с версией библиотеки поддержки 25.4.0.
Используйте версию 25.3.1 .
Заменить
С участием:
источник
compileSdkVersion 25
, никаких API-интерфейсов Android O и функций библиотеки поддержки, представленных с 25.4.0 (например, тонирование изображений для просмотра изображений и обратный порт морфинга векторных путей). ВотЕсть 2 варианта:
источник