Помилка піктограми Android Studio Gradle, злиття Manifest


141

Я постійно бачу це повідомлення і не знаю, як його назавжди вирішити.

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

Спробував додати android:replace="android:icon"до маніфесту навіть свою ікону.

Я спробував видалити android:icon="@drawable/ic_launcherз бібліотеки, але він продовжує повертатися, коли я будую, тому що його імпортують з Maven

Будь-які ідеї?


Ця проблема виникає при видачі в теги файлів маніфесту. Будь ласка , перевірте відповідь stackoverflow.com/a/39509659/2732632
Kimmi Dhingra

Я зіткнувся з тією ж проблемою, коли я додав копії дозволів у маніфест.
Грай

Відповіді:


342

Здається, виною головного інструменту злиття для Gradle.

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

Вирішили це, додавши в мій тег маніфесту xmlns:tools="http://schemas.android.com/tools"

Потім додається tools:replace="android:icon,android:theme"до тегу програми

Це вказує на злиття використовувати мою піктограму та тему маніфесту, а не інші бібліотеки

Сподіваюся, це допомагає дякую


6
Проблема все ще зберігається для мене. Робота в Android Studio 1.1.
Боллінг

1
Дякую! Працював для мене
Сандіп,

4
Останні версії Android 2.0. не працює. Хто відповів, повинен оновити це питання, якщо він мав на увазі збереження поколінь, то незабаром буде марно
Karue Benson Karue

3
Студія 2.2 від сьогодні всіх, хто має це і не працює над цим випуском,
Prasad,

2
не працює для Android Studio 2.2 з gradle 2.2.0.
DysaniazzZ

54

У мене є така ж проблема, я її виправляю так, додаючи xmlns:tools="http://schemas.android.com/tools"у верхню частину файлу mainfest, і додаю, tools:replace="android:icon"щоб виглядати

<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
не працює для Android Studio 2.2 та gradle 2.2.0.
DysaniazzZ

блискуча відповідь
Гунду Бандгар

10

У мене така ж помилка, просто цей код вирішує мою проблему, я хочу поділитися з вами:

в Manifest.xml:

  • додайте цей код вгору до свого XML-файлу:

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

  • Потім додано:

    tools:replace="android:icon,android:theme,android:label,android:name" до тегу додатків


@DysaniazzZ, це не залежить від Android Studio. див. журнал повідомлень
Аднан Абдолла Закі

Гаразд, я побачу.
DysaniazzZ

@Funwise, перевірте свій журнал повідомлень, я думаю, це не залежить від андроїд-студії.
Аднан Абдолла Закі

@ adnan9011, моя проблема полягала в тому, що копії дозволів у файлі Manifest.
Даруш

9

Відповіді shimi_tap достатньо. Що слід пам’ятати, це те, що вибирати лише те, що потрібно. Виберіть із {значок, ім'я, тема, мітка}. Я додав tools:replace="android:icon,android:theme", це не працює. Я додав tools:replace="android:icon,android:theme,android:label,android:name", це не працює. Це працює, коли я додав tools:replace="android:icon,android:theme,android:label". Тож з’ясуйте, у чому саме полягає конфлікт у ваших файлах маніфестів.


1
не працює для Android Studio 2.2 та gradle 2.2.0.
DysaniazzZ

5

Просто додайте xmlns:tools="http://schemas.android.com/tools"до свого тегу маніфесту, а потім потрібно додати його tools:replace="android:icon" раніше android:icon="@mipmap/ic_launcher" .


3

Ця помилка також виникає, коли minSdk додатка вище, ніж minSdk будь-якої бібліотеки.

app's minSdk >= libraries minSdk

1
Отже, яке рішення?
ітжар

2

Отримайте РІШЕННЯ ПІСЛЯ ВСІЧОГО ЧАСУ ГОГЛІНГУ

просто дістаньте ic_launcher і вставте його у папку " чернетки" ,

Перейдіть до свого маніфесту та змініть android: icon = "@ dravable / ic_launcher"

Очистіть свій проект та відновіть його

Сподіваюся, це допоможе вам


2

У мене виникла ця проблема із зміною піктограми з перехідної на mipmap.

Я лише пропустив лінію

tools:replace="android:icon"

в маніфесті.


1

Чомусь андроїд-студії не подобається дзвонити піктограму програми з папки, що витягується. Тож у такому випадку я створив каталог ресурсів mipmap в Res папці.

Клацніть правою кнопкою миші Res>> new> каталог ресурсів Android> тип ресурсу: mipmap, а тепер опустіть будь-який значок, а потім посилайте його на файл маніфесту. Ділитися цим, оскільки цей метод працював на мене.

android: icon: @ dravable / ic_launcher "

до

android: icon = "@ mipmap / ic_launcher"


для мене настройки стилю здавалися краще android:theme="@style/AppTheme" бачити -> gist.github.com/CrandellWS/4d284b11b5bca3054bddf8f511e49ae9
CrandellWS

1

Якщо нічого з цього не виходить, закрийте Android Studio. Перейдіть на додаток / src / main, відкрийте файл AndroidManifest.xml в текстовому редакторі (наприклад, піднесений), видаліть / замініть рядки помилок, збережіть і знову відкрийте студію Android.


1

Коли значення атрибута містить заповнювач (див. Формат нижче), маніфест злиття замінить це значення заповнювача на введене значення. Введені значення задаються у build.gradle. Синтаксис значень заповнювача - $ {name}, оскільки @ зарезервовано для посилань. Після того, як відбулося злиття останнього файлу, і до того, як отриманий об'єднаний файл маніфесту Android випишеться, усі значення із заповнювачем заміни будуть замінені на введені значення. Поломка збірки буде створена, якщо ім'я змінної невідоме.

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


0

Відповідь Shimi_tap - це правильний спосіб усунення проблеми. Якщо ви хочете використовувати старий інструмент злиття, ви можете додати це у файл build.gradle

android {useOldManifestMerger true}


2
"У 1.0 ми видалили можливість викликати старе маніфестне злиття ..." tools.android.com/tech-docs/new-build-system/user-guide/…
devgrg

Не вдалося знайти метод useOldManifestMerger () для аргументів [true] для проекту ': app' типу org.gradle.api.Project.
DysaniazzZ

0

Для мене ця проблема виникла після оновлення Служб Google Play. Одна з бібліотек, якими я користувався, включила цю бібліотеку, використовуючи "+" у своєму посиланні на оцінку, як

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

Це створило проблему, оскільки мінімальна версія, на яку спрямована ця бібліотека, була меншою, ніж орієнтована на поточну версію Служб Google Play. Я виявив це, просто заглянувши в колоди.


0

У .gradleзміні MinSDK, наприклад:

  • build.gradle (Модуль: додаток)
    • перед: minSdkVersion 9
    • після: minSdkVersion 14

тощо.


0

Я спробував все вищезгадане рішення

в Manifest.xml:

  • додайте цей код у верхній частині вашого файлу xml у тезі маніфесту:

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

  • Потім додано:

    tools:replace="android:icon,android:theme,android:label,android:name" до тегу додатків

але нічого з цього не спрацювало. Мені потрібно було видалити XML-файл, який знаходився в

mipmap-anydpi-v26 / ic_launcher_round.xml

Я тестував додаток у

Samsung Galaxy 8 з ОС версії 8.0.0

це справді рішення?


0

У файлі AndroidManifest.xml додайте у applicationвузол наступне :

tools:replace="android:appComponentFactory,android:icon,android:theme,android:label,android:name"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.