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 ?


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


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>

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


@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.


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" .


3

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

app's minSdk >= libraries minSdk

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


2

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

Przegapiłem tylko linię

tools:replace="android:icon"

w manifeście.


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"


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.


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


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}


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.


0

W Twojej .gradlezmianie MinSDK, na przykład:

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

itp.


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?


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"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.