Błąd ikony Android Studio Gradle, Manifest Merger

141

Ciągle widzę tę wiadomość i nie wiem, jak rozwiązać ją na dobre.

Error:(43, 9) Attribute application@icon value=(@drawable/new_app_icon) from AndroidManifest.xml:43:9
    is also present at com.github.erizet.signala:signala-longpolling:0.20:7:18 value=(@drawable/ic_launcher)
    Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:40:5 to override
:OpenBook:processDebugManifest FAILED
Error:Execution failed for task ':OpenBook:processDebugManifest'.
> Manifest merger failed with multiple errors, see logs

Próbowałem dodać android:replace="android:icon"do mojego manifestu nawet za pomocą mojej ikony.

Próbowałem usunąć plik android:icon="@drawable/ic_launcherz biblioteki, ale powraca, gdy buduję, ponieważ jest importowany z Mavena

Jakieś pomysły ?

shimi_tap
źródło
Ten problem występuje, gdy problem dotyczy tagów pliku manifestu. Sprawdź odpowiedź stackoverflow.com/a/39509659/2732632
Kimmi Dhingra
Napotkałem ten sam problem, gdy dodałem zduplikowane uprawnienia w manifeście.
Cloy,

Odpowiedzi:

342

Wydaje się, że jest to wina głównego narzędzia Fuzji dla gradle.

http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger

Rozwiązałem to, dodając do mojego tagu manifestu xmlns:tools="http://schemas.android.com/tools"

Następnie dodany tools:replace="android:icon,android:theme"do tagu aplikacji

To informuje fuzję, aby używała mojej ikony manifestu i motywu, a nie innych bibliotek

Mam nadzieję, że dzięki

shimi_tap
źródło
6
U mnie problem nadal występuje. Praca w Android Studio 1.1.
Bolling
1
Dzięki! Pracował dla mnie
Sandeep
4
Najnowsze wersje Androida 2.0. nie działa. Ktokolwiek odpowiedział, powinien zaktualizować to Q, jeśli chodzi mu o ratowanie pokoleń, w przeciwnym razie wkrótce będzie bezużyteczne
Karue Benson Karue
3
Studio 2.2 od dzisiaj wszystko to ma i nie działa w tym wydaniu
Prasad,
2
nie działa dla Android Studio 2.2 z gradle 2.2.0.
DysaniazzZ
54

Mam ten sam problem, naprawiam go w ten sposób, dodając xmlns:tools="http://schemas.android.com/tools"na górę pliku mainfest i dodając, tools:replace="android:icon"aby wyglądał

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"  // add tools line here 
    package="yourpackage">


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="android:icon"> ///add this line 

.....

</application>

</manifest>
Mina Fawzy
źródło
1
nie działa dla Android Studio 2.2 i Gradle 2.2.0.
DysaniazzZ
genialna odpowiedź
Gundu Bandgar
10

mam ten sam błąd, tylko ten kod rozwiązuje mój problem, chcę się z tobą podzielić:

w Manifest.xml:

  • dodaj ten kod na początku swojego pliku xml:

    xmlns:tools="http://schemas.android.com/tools"

  • Następnie dodano:

    tools:replace="android:icon,android:theme,android:label,android:name" do tagu aplikacji

Adnan Abdollah Zaki
źródło
@DysaniazzZ, to nie zależy od Android Studio. zobacz dziennik komunikatów.
Adnan Abdollah Zaki
Dobra, zobaczę.
DysaniazzZ
@Funwise, sprawdź dziennik wiadomości, myślę, że to nie zależy od studia Android.
Adnan Abdollah Zaki
@ adnan9011, mój problem polegał na tym, że miałem zduplikowane uprawnienia w pliku manifestu.
Darush
9

Odpowiedź shimi_tap wystarczy. Należy pamiętać, że wybierając tylko to, czego potrzebujesz. Wybierz spośród {ikona, nazwa, motyw, etykieta}. Dodałem tools:replace="android:icon,android:theme", że to nie działa. Dodałem tools:replace="android:icon,android:theme,android:label,android:name", że to nie działa. Działa, gdy dodałem tools:replace="android:icon,android:theme,android:label". Więc dowiedz się, na czym dokładnie polega konflikt w plikach manifestu.

黄锐铭
źródło
1
nie działa dla Android Studio 2.2 i Gradle 2.2.0.
DysaniazzZ
5

Po prostu dodaj xmlns:tools="http://schemas.android.com/tools"do swojego tagu manifestu, a następnie musisz dodać tools:replace="android:icon" wcześniej android:icon="@mipmap/ic_launcher" .

Ilya Cucumber
źródło
3

Ten błąd występuje również, gdy minSdk Twojej aplikacji jest wyższy niż minSdk dowolnej biblioteki.

app's minSdk >= libraries minSdk
Hisham Muneer
źródło
1
więc jakie jest rozwiązanie?
itzhar
2

ROZWIĄZANIE PO WIELU CZASU GOOGLINGU

po prostu weź swój ic_launcher i wklej go do folderu drawables,

Przejdź do swojego manifestu i zmień android: icon = "@ drawable / ic_launcher"

Wyczyść projekt i przebuduj

Mam nadzieję, że ci to pomoże

Ismael ozil
źródło
2

Miałem problem ze zmianą ikony z rysowalnej na mipmapę.

Przegapiłem tylko linię

tools:replace="android:icon"

w manifeście.

Alecs
źródło
1

Z jakiegoś powodu android studio nie lubi wywoływać ikony aplikacji z folderu do rysowania. W takim przypadku utworzyłem katalog zasobów mipmap w folderze res.

Kliknij prawym przyciskiem folder res> nowy> katalog zasobów Androida> typ zasobu: mipmap i teraz upuść tam dowolną ikonę, a następnie odnieś ją do pliku manifestu. Udostępnianie tego, ponieważ ta metoda zadziałała dla mnie.

android: icon: @ drawable / ic_launcher "

do

android: icon = "@ mipmap / ic_launcher"

Alex
źródło
dla mnie ustawienie stylu wydawało się najlepsze, android:theme="@style/AppTheme" zobacz -> gist.github.com/CrandellWS/4d284b11b5bca3054bddf8f511e49ae9
CrandellWS
1

Jeśli nic z tego nie działa, zamknij Android Studio. Idź do app / src / main, otwórz plik AndroidManifest.xml w edytorze tekstu (jak sublime), usuń / zamień linie erros, zapisz i ponownie otwórz Android Studio.

Ricardo Mutti
źródło
1

Gdy wartość atrybutu zawiera symbol zastępczy (patrz format poniżej), połączenie manifestu zamieni tę wartość zastępczą na wstrzykniętą wartość. Wstrzyknięte wartości są określone w pliku build.gradle. Składnia wartości zastępczych to $ {name}, ponieważ @ jest zarezerwowane dla linków. Po ostatnim scalaniu plików i przed zapisaniem wynikowego scalonego pliku manifestu systemu Android wszystkie wartości z symbolem zastępczym zostaną zamienione na wstrzyknięte wartości. Jeśli nazwa zmiennej jest nieznana, zostanie wygenerowane uszkodzenie kompilacji.

z http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Build-error

Shixin Zhang
źródło
0

Odpowiedź Shimi_tap to właściwy sposób na rozwiązanie problemu. Jeśli chcesz użyć starego narzędzia do łączenia, możesz dodać to do pliku build.gradle

android {useOldManifestMerger true}

San
źródło
2
„W wersji 1.0 usunęliśmy możliwość wywoływania starego łączenia manifestów ...” tools.android.com/tech-docs/new-build-system/user-guide/…
devgrg
Nie można znaleźć metody useOldManifestMerger () dla argumentów [true] w projekcie „: app” typu org.gradle.api.Project.
DysaniazzZ
0

U mnie ten problem wystąpił po aktualizacji Usług Google Play. Jedna z bibliotek, z których korzystałem, włączyła tę bibliotekę, używając znaku „+” w oznaczeniu stopnia, na przykład

compile 'com.google.android.gms:play-services:+'

Spowodowało to problem, ponieważ minimalna wersja docelowa dla tej biblioteki była mniejsza niż wersja docelowa bieżącej wersji usług Google Play. Znalazłem to, po prostu przeglądając dzienniki.

Rarw
źródło
0

W Twojej .gradlezmianie MinSDK, na przykład:

  • build.gradle (Moduł: aplikacja)
    • przed: minSdkVersion 9
    • po: minSdkVersion 14

itp.

Briliant Fay
źródło
0

Wypróbowałem wszystkie powyższe rozwiązania

w Manifest.xml:

  • dodaj ten kod na początku pliku xml w tagu manifestu:

    xmlns:tools="http://schemas.android.com/tools"

  • Następnie dodano:

    tools:replace="android:icon,android:theme,android:label,android:name" do tagu aplikacji

ale nic z tego nie działało. Musiałem usunąć plik xml, który znajdował się w

mipmap-anydpi-v26 / ic_launcher_round.xml

Testowałem aplikację w

Samsung Galaxy 8 z systemem operacyjnym w wersji 8.0.0

czy to naprawdę rozwiązanie?

surhidamatya
źródło
0

W pliku AndroidManifest.xml dodaj do applicationwęzła następujący kod:

tools:replace="android:appComponentFactory,android:icon,android:theme,android:label,android:name"
Messou
źródło