Maison  >  Article  >  Java  >  Comment résoudre « Erreur de fusion manifeste : application d'attribut en double @appComponentFactory » dans Android ?

Comment résoudre « Erreur de fusion manifeste : application d'attribut en double @appComponentFactory » dans Android ?

DDD
DDDoriginal
2024-10-31 17:11:02328parcourir

How to Resolve

Erreur de fusion manifeste : application d'attribut en double@appComponentFactory

Dans le projet Android fourni, vous rencontrez l'erreur suivante :

ERROR: Manifest merger failed : Attribute
application@appComponentFactory
value=(androidx.core.app.CoreComponentFactory) from
[androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86   is also
present at [com.android.support:support-compat:28.0.0]
AndroidManifest.xml:22:18-91
value=(android.support.v4.app.CoreComponentFactory).  Suggestion: add
'tools:replace="android:appComponentFactory"' to  element
at AndroidManifest.xml:9:5-44:19 to override.

Cette erreur indique que vous avez des attributs application@appComponentFactory en double définis dans votre manifeste Android, provoquant un échec de fusion manifeste. Plus précisément, deux bibliothèques différentes (androidx.core et com.android.support) déclarent toutes deux cet attribut.

Résolution :

Pour résoudre ce problème, vous disposez de deux options :

1. Migrez entièrement vers AndroidX

Migrez l'intégralité de votre projet vers les bibliothèques AndroidX, en remplaçant toutes les bibliothèques de support par leurs homologues Androidx. Cela implique d'apporter les modifications suivantes :

  • Mettez à niveau le plugin Android Gradle vers la version 3.2.1 ou ultérieure.
  • Définissez la version compileSdk de Gradle sur 28 ou supérieure.
  • Mettre à jour tous prennent en charge les dépendances de bibliothèque par rapport à leurs versions AndroidX.

Exemple :

<code class="gradle">implementation "androidx.appcompat:appcompat:1.1.0"
implementation "androidx.constraintlayout:constraintlayout:1.1.3"</code>

2. Rétrograder la dépendance Firebase

Vous pouvez également rétrograder votre dépendance Firebase vers une version qui ne nécessite pas de bibliothèques AndroidX. Cependant, il ne s'agit pas d'une solution à long terme, car Firebase migre activement vers AndroidX.

Exemple :

<code class="gradle">implementation "com.google.firebase:firebase-messaging:17.3.4"</code>

Remarques supplémentaires :

  • Si vous ajoutez tools:replace="android:appComponentFactory" au manifeste comme suggéré par le message d'erreur, il remplacera la valeur de l'attribut existant par la valeur de la première bibliothèque qui le définit. Cette approche peut fonctionner à court terme, mais elle n'est pas recommandée à long terme.
  • Vérifiez toutes les bibliothèques ou dépendances tierces susceptibles de déclarer l'attribut android:appComponentFactory. Si vous en trouvez, pensez à les mettre à jour vers leurs versions AndroidX ou à les exclure du projet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn