Hasta ahora recibí este error solo para un usuario, que usa un teléfono rooteado (SM-G900R7 Android 4.4.2). El error es así:
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)
Nunca uso android.graphics.drawable.Icon en mi código, todos los usos son de android.support.v4.graphics.drawable.IconCompat
y nunca uso esa clase en mi código ...
Por cierto, mi biblioteca de soporte es version 26.0.0, my minSdkVersion is 15 targetSdkVersion is 26.
Gracias
Respuestas:
Actualizar
El problema se solucionó en la biblioteca de soporte 27.0.0. Si actualiza, no olvide cambiar
compileSdkVersion 27
también.¿Qué está pasando?
Los dispositivos Samsung con Android 4.4 fallan así cuando las clases que se extienden
View
definen métodos que devuelven o toman parámetros de tipos que no están en classpath.Comenzando con la versión de la biblioteca de soporte 25.4.0
AppCompatImageView
yAppCompatImageButton
anula incorrectamente elsetImageIcon(Icon)
método. Desde queIcon
se introdujo la clase en API 23, la aplicación se bloquea en dispositivos Samsung con API 19.Algo similar sucede cuando intentas anular
View.onApplyWindowInsets(WindowInsets)
.Solución alternativa para la biblioteca de soporte 26.1.0
Hasta que esto se solucione de manera oficial,si está atascado con una versión anterior de la biblioteca de soporte, hice una versión modificada deappcompat-v7
dondesetImageIcon
se eliminan todos los rastros de métodos. Esto significa que no se bloqueará en un Samsung con Android 4.4.Pon esto en la parte inferior de build.gradle de tu aplicación:
Este código reemplazará la
appcompat-v7
dependencia con el artefacto modificado descrito.Actualmente, la única versión compatible de la solución es 26.1.0.
Advertencia: Comprenda el código antes de copiar y pegar, y siempre tenga cuidado al obtener código de fuentes desconocidas.
fuente
Este problema se resolvió en la biblioteca de soporte 27.0.0:
Complemento de Android Gradle 3.x:
Complemento de Android Gradle 2.x:
Tenga en cuenta que también deberá compilar con el nivel 27 del SDK.
fuente
Este bloqueo está relacionado con la versión 25.4.0 de la biblioteca de soporte.
Utilice la versión 25.3.1 .
Reemplazar
Con:
fuente
compileSdkVersion 25
, sin API de Android O y sin funciones de biblioteca de soporte introducidas desde la versión 25.4.0 (por ejemplo, elementos de diseño de vista de imagen teñida y backport de transformación de ruta de vector). Aquí está el registro de cambios de la biblioteca de soporte developer.android.com/topic/libraries/support-library/…Hay 2 opciones:
fuente