95 votes

java.lang.NoClassDefFoundError : android/graphiques/drawable/icône

Jusqu'à présent, j’ai eu cette erreur que pour un seul utilisateur, qui utilise un téléphone enraciné (SM-G900R7 Android 4.4.2). L’erreur est comme ceci :

Je n’utilise jamais android.graphics.drawable.Icon dans mon code, toutes les utilisations sont de `` et j’ai aussi jamais utiliser cette classe dans mon code...

BTW, ma bibliothèque de prise en charge est``

Merci

40voto

Eugen Pechanec Points 342

Mise à jour

Le problème est résolu dans la bibliothèque de prise en charge 27.0.0. Si vous mettez à jour n'oubliez pas de changement compileSdkVersion 27 ainsi.

Ce qui se passe?

Appareils Samsung avec Android 4.4 crash comme ça quand les classes étendant View définir des méthodes qui retournent ou prendre des paramètres de types qui ne sont pas sur le chemin de classe.

En commençant avec le soutien de la bibliothèque de la version 25.4.0 AppCompatImageView et AppCompatImageButton incorrectement remplace setImageIcon(Icon) méthode. Depuis Icon de classe a été introduit dans l'API 23 l'application se bloque sur les appareils Samsung avec l'API 19.

Chose semblable se produit lorsque vous essayez de remplacer View.onApplyWindowInsets(WindowInsets).

Solution de contournement pour le soutien de la bibliothèque 26.1.0

Jusqu'à ce que cela se fixe dans une façon officielle, Si vous êtes coincé avec une ancienne version de la bibliothèque de prise en charge, j'ai fait une version modifiée de l' appcompat-v7 où toutes les traces d' setImageIcon méthodes sont supprimés. Cela signifie qu'il ne tombe pas en panne sur un Samsung avec Android 4.4.

Placer au fond de votre application à construire.gradle:

repositories {
    maven { url "https://dl.bintray.com/consp1racy/maven" }
}

configurations.all {
    resolutionStrategy.eachDependency { details ->
        def requested = details.requested
        if (requested.group == 'com.android.support' && requested.name == 'appcompat-v7') {
            details.useTarget 'net.xpece.android:support-appcompat-v7-fixed:26.1.0-1'
        }
    }
}

Ce code remplacera appcompat-v7 de dépendance avec la décrit modifié artefact.

Actuellement, la seule prise en charge version du correctif est 26.1.0.

Avertissement: Comprendre le code avant de copier-coller, et toujours faire preuve de prudence lors de l'obtention du code à partir de sources inconnues!

14voto

Paul Lammertsma Points 12817

Ce problème a été résolu dans la bibliothèque 27.0.0 de soutien :

Plugin de Gradle Android 3.x :

Plugin de Gradle Android 2.x :

Notez que vous aurez également besoin de compiler contre niveau SDK 27.

1voto

phnmnn Points 3099

Cet accident liés à 25.4.0 version de bibliothèque de prise en charge.

Utilisation 25.3.1 version.

Remplacer

Avec :

-1voto

Dus Points 2216

Il y a 2 options :

  1. Avez-vous modifié la version de bibliothèque de prise en charge ? Il s’agit de question bibliothèque assez classique quand les ressources parfois ne sont pas « sauvés » portant le même nom, ou en tout. Ce n’est pas vous, son google. Essayez d’utiliser la prise en charge lib 25 et voir si cette erreur se produit toujours.
  2. Essayez de nettoyer le projet et reconstruire. Peut-être vous êtes gardé avec certaines anciennes versions de la bibliothèque dans votre dossier build, et lorsque vous générez votre projet il faut des anciennes valeurs de lui.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X