39 votes

Erreur de la bibliothèque Google Material Design Type de programme déjà présent : Android.support.v4.app.INotificationSideChannel$Stub$Proxy

Chaque fois que j'ajoute implemntation 'com.google.android.material:material:1.0.0-alpha1' Quand j'essaie de construire mon projet, Android Studio dit :

Type de programme déjà présent : Android.support.v4.app.INotificationSideChannel$Stub$Proxy Message{kind=ERROR, text=Type de programme déjà présent : Android.support.v4.app.INotificationSideChannel$Stub$Proxy, sources=[Fichier source inconnu], tool name=Optional.of(D8)}

C'est mon gradle script :

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 'android-P'
    defaultConfig {
        applicationId "it.smart.bab3"
        minSdkVersion 21
        targetSdkVersion 'p'
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
    implementation 'com.google.android.material:material:1.0.0-alpha1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:design:28.0.0-alpha1'
    implementation 'com.android.support:support-v4:28.0.0-alpha1'
}

Je suis nouveau dans ce type d'erreurs et je n'ai pas trouvé de solution à ce problème. Merci

53voto

Alvaro Santa Cruz Points 556

J'ai lutté toute la journée avec ce problème aussi. Finalement, j'ai réussi à compiler et à exécuter le projet avec succès.

Tout d'abord, débarrassez-vous de ça :

implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
implementation 'com.android.support:design:28.0.0-alpha1'
implementation 'com.android.support:support-v4:28.0.0-alpha1'

Ajoutez ce qui suit dans votre fichier gradle.properties :

android.useAndroidX = true
android.enableJetifier = false

Et enfin, synchronisez le projet et compilez.

Si cela ne fonctionne pas, nettoyez le projet et reconstruisez-le.

PS : Je n'arrive pas à faire fonctionner targetSdkVersion 'p'. Mon fichier build.gradle se termine comme suit :

apply plugin: 'com.android.application'

android {
    compileSdkVersion 'android-P'
    defaultConfig {
        applicationId "com.github.alvarosct02.demo"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.google.android.material:material:1.0.0-alpha1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

}

J'espère que cela fonctionnera pour vous aussi.

0 votes

Alors que cela semblait initialement fonctionner pour moi, la même erreur s'est produite après que j'ai ajouté Room au projet.

0 votes

Rappelez-vous que pour utiliser l'appcompatactivité et d'autres trucs, consultez cette page :- developer.Android.com/topic/libraries/support-library/refactor

1 votes

Il n'est pas nécessaire d'ajouter 'Android.useAndroidX = true' ou 'Android.enableJetifier = false'. Assurez-vous simplement que vous utilisez les librairies de support AndroidX et non les librairies de support v4 ou v7. Consultez developer.Android.com/topic/libraries/support-library/refactor

20voto

Ashu Tyagi Points 835

J'ai perdu deux jours à chercher une solution. Ceux qui sont toujours à la recherche d'une solution peuvent suivre les étapes ci-dessous :

  1. Mettez à jour votre Android Studio à la dernière version.

  2. Mettez à jour votre compileSdkVersion et targetSdkVersion à 28.

    android {
    
        compileSdkVersion 28
    
        defaultConfig {
            applicationId "com.your.appid"
            minSdkVersion 19
            targetSdkVersion 28
            versionCode 50
            versionName "1.50"
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
            multiDexEnabled true
            setProperty("archivesBaseName", "your-app-$versionName")
            resConfigs "en"
         }
    }
  3. Allez dans la structure de votre projet et changez votre version de gradle en 4.10 .

  4. Ajoutez d'abord cette dépendance :

    implementation 'com.google.android.material:material:1.0.0'
  5. Maintenant, supprimez toutes les dépendances de la bibliothèque de support :

    implementation "com.android.support:design:$SUPPORT_LIBRARY_VERSION"
    implementation "com.android.support:support-v4:$SUPPORT_LIBRARY_VERSION"
    implementation "com.android.support:appcompat-v7:$SUPPORT_LIBRARY_VERSION"
    implementation "com.android.support:recyclerview-v7:$SUPPORT_LIBRARY_VERSION"
    implementation "com.android.support:cardview-v7:$SUPPORT_LIBRARY_VERSION"
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:multidex:1.0.3'
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    androidTestImplementation('com.android.support.test.espresso:espresso- 
       core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.google.code.findbugs', module: 'jsr305'
    })
  6. Maintenant, collez ce qui suit dans votre gradle.properties fichier :

    android.useAndroidX = true
    android.enableJetifier = true
  7. Au niveau de votre projet build.gradle fichier :

    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'
        classpath 'com.google.gms:google-services:4.1.0'
    };

Pour ceux qui utilisent Couteau à beurre ajoutez les lignes ci-dessous dans votre fichier build.gradle au niveau du projet :

allprojects {
    repositories {
    google()
    jcenter()
    maven { url "https://jitpack.io" }
    maven { url "https://dl.bintray.com/drummer-aidan/maven/" }
    maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
  }
}

Et dans votre module build.gradle ajoutez les dépendances ci-dessous :

 implementation "com.jakewharton:butterknife:9.0.0-SNAPSHOT"
 annotationProcessor "com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT"
  1. Maintenant Goto Construire > Reconstruire le projet alors vous risquez de recevoir beaucoup d'erreurs.
  1. Maintenant, référez-vous este lien.

    Il a la liste de tous les vieux (Android.support) vs nouveau (androidx.*) dépendances.

    Remplacez tous vos anciennes importations con el nouveau ceux
    (Utilisez la fonction replaceAll d'Android studio [ctrl + shift + R] qui vous fera gagner du temps).

  1. Enfin, après avoir refactoré toutes les anciennes bibliothèques avec les nouvelles :
    Reconstruisez le projet à nouveau et, avec un peu de chance, cela devrait fonctionner.

Note : Vous pouvez également utiliser Refactor > Migrer vers androidx dans Android studio mais cela n'a pas fonctionné pour moi.

0 votes

Ignorez cette réponse. Android Studio v3.2+ résout le problème sans revenir aux bibliothèques de support qui sont abandonnées. Utilisez la fonction "Migrate to AndroidX" sous le menu Refactor et épargnez vous quelques maux de tête !

1 votes

@AlwaysLucky J'ai essayé mais ça n'a pas marché pour moi. Je l'ai déjà mentionné dans ma réponse. Quoi qu'il en soit, si cela fonctionne maintenant, c'est encore mieux.

1 votes

Désolé, j'ai commenté la mauvaise réponse. Je voulais commenter la réponse acceptée. Quelle erreur de débutant, haha. J'apprécie le temps et les efforts que vous avez mis dans les détails de votre réponse. J'ai passé tellement d'heures sur ce problème et tout ce que j'ai fait pour le résoudre a été de mettre à jour la version bêta de AS 3.2, donc j'essayais d'épargner aux autres le temps que j'ai perdu sur ce problème.

6voto

user3033184 Points 31

J'ai commencé à avoir cette erreur après avoir mis à jour le ButterKnife à la version 8.8.1.

Donc, je lance la commande gradle -q dependencies pour générer un rapport de dépendance, après quoi vous devriez voir d'où vient D8. Dans mon cas, de la bibliothèque "ButterKnife" :

+--- com.jakewharton:butterknife:8.8.1
|    |    \--- com.android.support:support-compat:d8

Vous pouvez également voir vos dépendances Android en allant dans votre vue Gradle d'Android Studio (dans la barre d'outils d'Android Studio, naviguez vers "View/Tool Windows/Gradle"), et en sélectionnant la cible "androidDependencies" sous "My-Project-Name/Tasks/Android" (double-cliquez pour exécuter ou cliquez avec le bouton droit et exécutez).

Pour résoudre ce problème, j'ai ajouté ce morceau de code exclude module: 'support-compat' à mon "app/build.gradle" comme ci-dessous :

implementation ('com.jakewharton:butterknife:8.8.1') { 
     exclude module: 'support-compat' 
} 
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

J'espère que cela fonctionnera pour quelqu'un d'autre :] A la vôtre !

0 votes

La façon appropriée de gérer ce problème est de mettre à jour votre plugin Android Gradle vers au moins la version 3.2.0-alpha14 alors assurez-vous que vous avez android.enableJetifier=true dans votre gradle.properties fichier.

0 votes

En faisant l'exclusion, j'obtiens ce qui suit : Could not find method com.jakewharton:butterknife:8.8.1() for arguments [build_aay4rtv2iznrl6v18va02zedg$_run_closure2$_closure6@10afe254] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

5voto

Always Lucky Points 188

Android Studio v3.2+ résout ce problème. Il ajoute également un élément "Migrate to AndroidX" sous le menu Refactor. Aucune solution de contournement ou de retour en arrière n'est nécessaire.

Mettez à jour Android Studio à partir du canal bêta pour utiliser la version 3.2+ ou attendez la sortie d'une version stable.

EDIT : Android Studio v3.2 est maintenant dans le canal stable. Il est important de ne plus utiliser les bibliothèques de support et de migrer vers les bibliothèques AndroidX car le support des anciennes bibliothèques de support est terminé.

0 votes

La mise à jour vers la dernière version d'Android Studio et l'exécution de Migrate to Android X ont résolu le problème pour moi.

1voto

Victor Rendina Points 413

Si vous incluez une bibliothèque qui a une dépendance transitive sur la bibliothèque de support d'Android, vous devez également utiliser la commande jetifier qui fait partie du plugin Android Gradle version 3.2.0-alpha14 ou supérieure. Vous pouvez déterminer si vous avez une bibliothèque qui dépend de la bibliothèque de support en exécutant votre Gradle dependencies tâche.

D'après l'article du blog des développeurs Android ( https://Android-developers.googleblog.com/2018/05/hello-world-androidx.html ) :

Si vous dépendez d'une bibliothèque qui fait référence à l'ancienne bibliothèque de support, Android Studio mettra à jour cette bibliothèque pour référencer androidx à la place via la traduction des dépendances. La traduction des dépendances est automatiquement automatiquement appliquée par le plugin Android Gradle 3.2.0-alpha14, qui réécrit les fichiers bytecode et les ressources des dépendances JAR et AAR (et des dépendances transitives) pour dépendances transitives) afin de référencer les nouvelles classes et les nouveaux artefacts. Nous fournirons également un outil de traduction autonome sous la forme d'un fichier JAR.

Dans votre gradle.properties assurez-vous que vous avez un dossier :

android.enableJetifier=true android.useAndroidX=true

J'ai eu ce problème avec Leak Canary sur un petit projet et il a été résolu en mettant à jour le plugin Android Gradle à la version appropriée. https://github.com/square/leakcanary/issues/1103

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