Até agora, recebi este erro apenas para um usuário, que usa um telefone com acesso root (SM-G900R7 Android 4.4.2). O erro é assim:
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)
Eu nunca uso android.graphics.drawable.Icon em meu código, todos os usos são de android.support.v4.graphics.drawable.IconCompat
e também nunca uso essa classe em meu código ...
Btw minha biblioteca de suporte é version 26.0.0, my minSdkVersion is 15 targetSdkVersion is 26.
obrigado
Respostas:
Atualizar
O problema foi corrigido na biblioteca de suporte 27.0.0. Se você atualizar, não se esqueça de alterar
compileSdkVersion 27
também.O que está acontecendo?
Os dispositivos Samsung com Android 4.4 travam assim quando as classes estendem,
View
definem métodos que retornam ou pegam parâmetros de tipos que não estão no classpath.Começando com a versão da biblioteca de suporte 25.4.0
AppCompatImageView
eAppCompatImageButton
substitui incorretamente osetImageIcon(Icon)
método. Desde que aIcon
aula foi introduzida na API 23, o aplicativo trava em dispositivos Samsung com API 19.Coisa semelhante acontece quando você tenta substituir
View.onApplyWindowInsets(WindowInsets)
.Solução alternativa para a biblioteca de suporte 26.1.0
Até que isso seja corrigido de maneira oficial,se você estiver preso com uma versão mais antiga da biblioteca de suporte, fiz uma versão modificada deappcompat-v7
onde todos os vestígios desetImageIcon
métodos são removidos. Isso significa que ele não travará em um Samsung com Android 4.4.Coloque isso na parte inferior do build.gradle do seu aplicativo:
Este código substituirá a
appcompat-v7
dependência com o artefato modificado descrito.Atualmente, a única versão com suporte da correção é 26.1.0.
Aviso: entenda o código antes de copiar e colar e sempre tenha cuidado ao obter código de fontes desconhecidas!
fonte
Este problema foi resolvido na biblioteca de suporte 27.0.0:
Plug-in do Android Gradle 3.x:
Plug-in do Android Gradle 2.x:
Observe que você também precisará compilar no SDK de nível 27.
fonte
Este travamento está relacionado à versão 25.4.0 da biblioteca de suporte.
Use a versão 25.3.1 .
Substituir
Com:
fonte
compileSdkVersion 25
, sem APIs do Android O e sem recursos de biblioteca de suporte introduzidos desde 25.4.0 (por exemplo, tingir drawables de visualização de imagem e backport de transformação de caminho vetorial). Aqui está o changelog da biblioteca de suporte developer.android.com/topic/libraries/support-library/…Existem 2 opções:
fonte