Saya menggunakan proyek gradle dengan banyak dependensi perpustakaan berbeda dan menggunakan merger manifes baru. Di <application />
tag saya, saya mengaturnya seperti ini:
<application tools:replace="android:icon, android:label, android:theme, android:name"
android:name="com.example.myapp.MyApplcation"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/application_name"
android:logo="@drawable/logo_ab"
android:theme="@style/AppTheme"
>
....
</application>
Namun saya menerima kesalahan:
/android/MyApp/app/src/main/AndroidManifest.xml:29:9 Error:
Attribute application@icon value=(@drawable/ic_launcher) from AndroidManifest.xml:29:9
is also present at {Library Name} value=(@drawable/app_icon)
Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:26:5 to override
/android/MyApp/app/src/main/AndroidManifest.xml:30:9 Error:
Attribute application@label value=(@string/application_name) from AndroidManifest.xml:30:9
is also present at {Library Name} value=(@string/app_name)
Suggestion: add 'tools:replace="android:label"' to <application> element at AndroidManifest.xml:26:5 to override
/android/MyApp/app/src/main/AndroidManifest.xml:27:9 Error:
Attribute application@name value=(com.example.myapp.MyApplication) from AndroidManifest.xml:27:9
is also present at {Another Library}
Suggestion: add 'tools:replace="android:name"' to <application> element at AndroidManifest.xml:26:5 to override
/android/MyApp/app/src/main/AndroidManifest.xml:32:9 Error:
Attribute application@theme value=(@style/AppTheme) from AndroidManifest.xml:32:9
is also present at {Library Name} value=(@style/AppTheme)
Suggestion: add 'tools:replace="android:theme"' to <application> element at AndroidManifest.xml:26:5 to override
android
android-gradle-plugin
agrosner
sumber
sumber
<application>
tag yang diulang dalam proyek. Tolong pastikan hanya ada satu<application>
.Jawaban:
Nyatakan header manifes Anda seperti ini
Kemudian Anda dapat menambahkan atribut ke tag aplikasi Anda sebagai berikut:
Misalnya saya perlu mengganti ikon dan label. Semoga berhasil!
sumber
tools:node="replace"
:<meta-data tools:node="replace" android:name="QUERY_LOG" android:value="true" />
dll.tools:replace
tag aplikasi saya yang harus menggantikannya dan bukan sumber yang harus diganti. Jadi manifes aplikasi saya menggantikan apa yang didefinisikan di perpustakaan saya. Anda mengatakan "apa yang harus diganti" alih-alih "apa yang bisa diganti". Saya harap itu membersihkan pertanyaan.tools:replace="android:versionCode, android:versionName"
harus di dalam<manifest >
tag.Saya memperbaiki masalah yang sama. Solusi untuk saya:
xmlns:tools="http://schemas.android.com/tools"
baris dalam tag manifestools:replace=..
tag manifesandroid:label=...
di tag manifesContoh:
sumber
<manifest>
secara langsung dan bukan di bawah<application>
adalah satu-satunya hal yang memperbaiki masalah saya.Coba atur ulang dependensi Anda dalam file gradle Anda. Saya harus memindahkan perpustakaan yang menyinggung dari bagian bawah daftar ke atas, dan kemudian berhasil.
sumber
Saya baru saja mengalami perilaku yang sama
tools:replace=...
seperti yang dijelaskan oleh OP.Ternyata penyebab utama
tools:replace
diabaikan oleh merger manifes adalah bug yang dijelaskan di sini . Ini pada dasarnya berarti bahwa jika Anda memiliki pustaka di proyek Anda yang berisi manifes dengan<application ...>
simpul yang berisitools:ignore=...
atribut, dapat terjadi bahwatools:replace=...
atribut dalam manifes modul utama Anda akan diabaikan.Poin rumit di sini adalah hal itu bisa terjadi, tetapi tidak harus. Dalam kasus saya, saya memiliki dua perpustakaan, perpustakaan A dengan
tools:ignore=...
atribut, perpustakaan B dengan atribut yang akan diganti dalam manifes masing-masing dantools:replace=...
atribut dalam manifes modul utama. Jika manifes B digabungkan ke manifes utama sebelum manifes A semuanya bekerja seperti yang diharapkan. Dalam urutan penggabungan yang berlawanan, kesalahan muncul.Urutan penggabungan ini tampaknya agak acak. Dalam kasus saya mengubah urutan di bagian dependensi
build.gradle
tidak berpengaruh tetapi mengubah nama rasa melakukannya.Jadi, satu-satunya solusi yang dapat diandalkan tampaknya adalah membongkar masalah yang menyebabkan pustaka, menghapus
tools:ignore=...
tag (yang seharusnya tidak menjadi masalah karena ini adalah petunjuk untuk hanya serat) dan kemas pustaka lagi.Dan pilih bug untuk diperbaiki, karena sebab.
sumber
<manifest>
simpul dari<application>
simpul dan itu berhasil.Solusi Pekerjaan Akhir untuk saya (Soroti tages dalam kode sampel):
xmlns:tools
baris dalam tag manifestools:replace
tag aplikasiContoh:
sumber
Bagian yang hilang bagi saya adalah ini:
sebagai contoh:
sumber
Anda dapat mengganti yang ada di tag aplikasi Manifest Anda:
dan akan bekerja untuk Anda.
sumber
tools:replace="android:label"
aplikasi tetapi tidak berhasilTETAPI MEMILIKI KESALAHAN PERSIS, Cukup tambahkan alat ini: replace = "android: icon, android: theme"
ke dalam tag aplikasi Anda di manifes Anda, itu berfungsi dengan baik,
sumber
Anda dapat mengganti yang ada di
application
tag Manifest Anda :dan akan bekerja untuk Anda.
Penjelasan
Menggunakan dependensi / pustaka seperti itu di
gradle
file Anda yang memiliki label-label itu di tag aplikasi Manifest dapat menghasilkan masalah ini dan menggantinya dengan AndaManifest
adalah solusinya.sumber
Retasan berikut ini berfungsi:
xmlns:tools="http://schemas.android.com/tools"
baris dalam tag manifestools:replace="android:icon,android:theme,android:allowBackup,label"
tag aplikasisumber
Masalah saya adalah proyek multi modul dengan modul dasar, modul aplikasi, dan modul fitur. Setiap modul memiliki AndroidManifest sendiri, dan saya mengimplementasikan varian build untuk debug dan main. Jadi kita harus yakin bahwa "android: name" baru saja dideklarasikan di Manifest dari debug dan utama saja, dan jangan mengaturnya dalam modul Manifest in child. Mis: Manifes dalam main:
Manifes dalam debug:
Jangan set "android: name" di file Manifest lain seperti ini:
Cukup tentukan dalam modul fitur seperti ini dan itu akan bergabung dengan baik
sumber
Saya menerima kesalahan serupa pada proyek yang saya impor:
Diperbaiki setelah mengubah baris di bawah ini dalam tag aplikasi:
untuk
sumber
Saya juga mengalami masalah ini dan mengubahnya:
untuk
sumber
sumber