Rumah  >  Artikel  >  Java  >  Bagaimana untuk Menyelesaikan \'Ralat Penggabungan Manifes: Duplikat Atribut application@appComponentFactory\' dalam Android?

Bagaimana untuk Menyelesaikan \'Ralat Penggabungan Manifes: Duplikat Atribut application@appComponentFactory\' dalam Android?

DDD
DDDasal
2024-10-31 17:11:02328semak imbas

How to Resolve

Ralat Penggabungan Manifes: Duplikat Attribute application@appComponentFactory

Dalam projek Android yang disediakan, anda menghadapi ralat berikut:

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.

Ralat ini menunjukkan bahawa anda mempunyai atribut application@appComponentFactory pendua yang ditakrifkan dalam manifes Android anda, menyebabkan kegagalan penggabungan manifes. Khususnya, dua perpustakaan berbeza (androidx.core dan com.android.support) kedua-duanya mengisytiharkan atribut ini.

Penyelesaian:

Untuk menyelesaikan isu ini, anda mempunyai dua pilihan:

1. Berhijrah Sepenuhnya ke AndroidX

Pindahkan keseluruhan projek anda ke perpustakaan AndroidX, menggantikan semua perpustakaan sokongan dengan rakan androidx mereka. Ini melibatkan membuat perubahan berikut:

  • Naik taraf pemalam Android Gradle kepada versi 3.2.1 atau lebih baru.
  • Tetapkan Gradle's compileSdkVersion kepada 28 atau lebih tinggi.
  • Kemas kini semua kebergantungan perpustakaan sokongan kepada versi AndroidX mereka.

Contoh:

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

2. Turunkan Ketergantungan Firebase

Sebagai alternatif, anda boleh menurunkan taraf kebergantungan Firebase anda kepada versi yang tidak memerlukan pustaka AndroidX. Walau bagaimanapun, ini bukan penyelesaian jangka panjang, kerana Firebase sedang giat berhijrah ke AndroidX.

Contoh:

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

Nota Tambahan:

  • Jika anda menambah tools:replace="android:appComponentFactory" pada manifes seperti yang dicadangkan oleh mesej ralat, ia akan mengatasi nilai atribut sedia ada dengan nilai daripada pustaka pertama yang mentakrifkannya. Pendekatan ini mungkin berfungsi dalam jangka pendek, tetapi ia tidak disyorkan untuk jangka panjang.
  • Semak dua kali mana-mana perpustakaan atau kebergantungan pihak ketiga yang mungkin mengisytiharkan atribut android:appComponentFactory. Jika anda menemui apa-apa, pertimbangkan untuk mengemas kininya kepada versi AndroidX mereka atau mengecualikannya daripada projek.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan \'Ralat Penggabungan Manifes: Duplikat Atribut application@appComponentFactory\' dalam Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn