133
votes

Impossible de charger la classe AndroidComponentSextension après la mise à niveau du plugin Android Gradle 7.1


0 commentaires

8 Réponses :


169
votes

Mise à jour de la navigation sûre args

Ces lignes sont les plus importantes à examiner:

classpath "com.google.firebase:perf-plugin:1.4.1"

Cela indique que l'erreur provient de Le plugin args de navigation sécurisé .

Selon le Android Gradle Plugin 7.1.0 Notes de version :

API AGP dont dépendent le plugin de navigation en toute sécurité gradle ont été supprimés. AGP 7.1 ne fonctionne pas avec la navigation SAFE ARGS Versions 2.4.0-RC1 ou 2.4.0 , mais fonctionnera avec les versions 2.5.0-alpha01 et 2.4.1. En attendant, en tant que solution de contournement, vous pouvez utiliser AGP 7.1 avec une construction instantanée d'args de navigation, Navigation 2.5.0-snapshot. Pour utiliser la construction instantanée, suivez le instructions instantanées avec ID de construction # 8054565.

comme navigation 2.4.1 Maintenant disponible, vous pouvez passer à cette version de la navigation pour gagner le correctif:

Backports à partir de navigation 2.5.0-alpha01 : Les args sûrs dépendent désormais du plugin Android Gradle version 7.0.4. Cela signifie que les args de la navigation en toute sécurité ne seront plus compatibles avec les versions Android Studio avant 7.0, mais est désormais compatible avec le plugin Android Gradle 7.1.0 et plus.

Caused by: java.lang.NoClassDefFoundError: com/android/build/api/extension/AndroidComponentsExtension
    at com.google.firebase.perf.plugin.FirebasePerfClassVisitorFactory.registerForProject(FirebasePerfClassVisitorFactory.java:54)
    at com.google.firebase.perf.plugin.FirebasePerfPlugin.perform(FirebasePerfPlugin.java:145)
    at com.google.firebase.perf.plugin.FirebasePerfPlugin.lambda$apply$0(FirebasePerfPlugin.java:107)

Notez que vous devez toujours utiliser la même version de la bibliothèque de navigation que le plugin Args Safe (c'est-à-dire que votre application doit également utiliser la navigation 2.4.1): vous ne devez pas Essayez d'utiliser le plugin Args de navigation 2.4.1+ avec une version antérieure de la navigation (telle que 2.3.5).

Remarque sur le plugin Firebase perf

Notez que vous pouvez voir cette même erreur lorsque vous utilisez:

classpath "com.google.firebase:perf-plugin:1.4.0"

avec une idea.log de ces états:

dependencies {
    classpath 'com.android.tools.build:gradle:7.1.0'

    // Update this line to use 2.4.1
    classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.4.1"
}

selon le Firebase Perf Plugin 1.4.1 Remarques de sortie :

a migré des API du plugin Android Gradle déprécié.

Vous devez donc passer à 1.4.1:

Caused by: java.lang.NoClassDefFoundError: com/android/build/api/extension/AndroidComponentsExtension
    at androidx.navigation.safeargs.gradle.SafeArgsPlugin.apply(SafeArgsPlugin.kt:73)
    at androidx.navigation.safeargs.gradle.SafeArgsPlugin.apply(SafeArgsPlugin.kt:42)


6 commentaires

Oui, mais le plugin Firebase Perf 1.4. * n'est pas compatible avec le plus récent Moshi. Le bug est connu, FIX sera dans ChipMunk. 1.3.5 a bien fonctionné jusqu'à ce que le plugin Android Gradle 7.1.0. Donc, en ce moment, il est impossible d'utiliser Moshi avec le plugin Firebase perf dans le plus récent "stable" AS. C'est si génial? github.com/square/moshi/issues/1463


@Jakoss - fwiw, ce commentaire sur le problème des feux semble impliquer que Firebase perf 1.3.2 fonctionne avec Moshi et AGP 7.1. Pourrait valoir la peine d'essayer.


Oui, cela fonctionne, ce qui est un peu un soulagement, mais il est toujours très bizarre que nous devons attendre que Chipmunk fonctionne avec le nouveau plugin de performances Firebase. L'utilisation d'un canal Unstable n'est pas une option pour les équipes qui entretiennent des applications plus grandes


Le remplacement de 2.4.0 par 2.5.0-alpha01 a fonctionné pour moi. Merci


Pour le problème de Hilt, appliquez Hilt_version = '2.40.5'


Dans mon cas, la version des plugins Hilt Hilt et Firebase Perf a résolu le problème



6
votes

Vous pouvez faire cette chose. Fonctionnant parfaitement pour moi

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
    id 'com.android.application' version '7.1.0' apply false
    id 'com.android.library' version '7.1.0' apply false
    id 'org.jetbrains.kotlin.android' version '1.6.10' apply false
    id "com.google.dagger.hilt.android" version '2.41' apply false
    id 'androidx.navigation.safeargs.kotlin' version '2.4.0' apply false // use this one
//    classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.4.0" (will not work now)

}

task clean(type: Delete) {
    delete rootProject.buildDir
}


3 commentaires

Vous devez utiliser l'ID de plugin que vous utilisiez auparavant dans le dossier Build.gradle of App (pas le projet Build.gradle One)


Où avez-vous obtenu ce numéro de version?


@Bitwisevs



0
votes
I fixed the issue by downgrading the version of navigation to 2.3.5

    def nav_version = "2.3.5"
after testing, use navigation 2.4.0 and AGP 7.0.4 work fine

1 commentaires

Bien que cela ait résolu le problème de synchronisation, cela conduit à d'autres avertissements dus aux usages API obsolètes - API 'BaseVariant.getApplicationIdTextreSource' est obsolète et a été remplacé par 'variantProperties.applicationId'. Il sera supprimé dans la version 7.0 du plugin Android Gradle. Pour plus d'informations, voir TBD. - J'aime particulièrement la partie «voir TBD» de ce message, indiquant qu'il s'agit probablement d'un territoire dangereux qui pourrait également se casser à tout moment.



11
votes

Dans mon cas, le problème était avec la version hilt . J'ai mis à jour vers le dernier 2.40.5 et c'est du travail.

Si vous n'avez pas hilt dépendance dans votre projet la meilleure façon de trouver une bibliothèque qui lance l'exception pendant Gradle Sync, c'est pour vérifier idea.log fichier.

Caused by: java.lang.NoClassDefFoundError: com/android/build/api/extension/AndroidComponentsExtension
    at dagger.hilt.android.plugin.HiltGradlePlugin.configureBytecodeTransformASM(HiltGradlePlugin.kt:257)

Ayez un bon codage :)


1 commentaires

Dans mon cas quand, j'ai dû mettre à niveau à la fois la version de Hilt et de Navigation Composante



13
votes

Mise à jour: Le problème est maintenant résolu dans AGP 7.1.2 .


  • Firebase Perf Plugin 1.4.1 ne fonctionnera avec AGP 7.1 que si votre projet ne dépend de aucune bibliothèque qui utilise des pots multi-libérés, aka mrjars .
  • Une dépendance populaire qui utilise mrjars est moshi .
  • La cause profonde du problème réside dans le plugin Android Gradle .
  • L'équipe de Firebase Perf a fait le déclaration a déclaration a >:

Voici quelques mises à jour:

  • AGP v7.2.0-beta01 a été mis à disposition la semaine dernière et fonctionnera avec le dernier plugin perf v1.4.1 .
  • AGP v7.2 rc1 devrait être publié le 1er mars et AGP v7.2 final est planifié le 9 mars.
  • En attendant, voici quelques solutions de contournement qui méritent d'être essayées:

  • Utilisez le plugin perf v1.3.5 avec AGP v6.8.3 . Perf Plugin v1.3.5 et ci-dessous n'est pas compatible avec AGP v7.0.0 + ; Pour que le plugin perf soit compatible avec AGP v7.0.0 + , nous devons utiliser la nouvelle API de transformation, qui introduit la panne de construction où même si le plugin perf filtre les classes dans le Répertoire Meta-Inf / de l'instrumentation, AGP essaie toujours de visiter la classe pour collecter des informations à ce sujet. Cependant, AGP travaille sur une correction plus permanente pour cela où nous aurons une option pour filtrer complètement les classes ratées.
  • Attendez jusqu'au 9 mars pour intégrer la dernière version du plugin perf et AGP.
  • Essayez une version bêta de l'AGP avec la dernière version du plugin perf et passez à la version de production après le 9 mars.
    • Trace de pile:
    org.gradle.api.GradleScriptException: A problem occurred evaluating project ':app'.
        at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:93)
        at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.lambda$apply$0(DefaultScriptPluginFactory.java:133)
        at ...
    Caused by: java.lang.NoClassDefFoundError: com/android/build/api/extension/AndroidComponentsExtension
        at com.google.firebase.perf.plugin.FirebasePerfClassVisitorFactory.registerForProject(FirebasePerfClassVisitorFactory.java:54)
        at com.google.firebase.perf.plugin.FirebasePerfPlugin.perform(FirebasePerfPlugin.java:145)
        at com.google.firebase.perf.plugin.FirebasePerfPlugin.lambda$apply$0(FirebasePerfPlugin.java:107)
        at org.gradle.api.internal.plugins.DefaultPluginManager$2.execute(DefaultPluginManager.java:258)
        at ...
    


    2 commentaires

    La mise à jour du plugin Performance Firebase au 1.4.1 a fonctionné pour moi.


    Cela ne fonctionnera que si votre projet ne dépend pas d'une bibliothèque qui utilise MRJARS. J'ai mis à jour la réponse avec plus de détails à ce sujet.



    1
    votes

    Mise à jour de «2.40.5» et Firebase: Perf-Plugin à «1.4.1» a fonctionné pour moi.


    0 commentaires

    0
    votes

    Dans mon cas, j'ai dû mettre à jour le plugin de cartes ..

     Plugin de cartes mises à jour


    0 commentaires

    1
    votes

    Dans mon cas, j'ai fait face à un problème sur Secrets-Gradle-Plugin. Initialement, j'ai utilisé la version 2.0.1 (dernier). Après avoir rétrogradé en 1.3.0. Cela a fonctionné pour moi.

    Dans Root Build de Project. pre>


    0 commentaires