Ошибка значка Gradle студии Android, слияние манифеста

143

Я все время вижу это сообщение и не знаю, как решить его навсегда.

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

Любые идеи ?

shimi_tap
источник
Эта проблема возникает, когда проблема в тегах файла манифеста. Пожалуйста, проверьте ответ stackoverflow.com/a/39509659/2732632
Кимми Дхингра,
Я столкнулся с той же проблемой, когда добавил повторяющиеся разрешения в манифест.
пресыщать

Ответы:

346

Похоже, это вина самого популярного инструмента Merger для 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"в тег приложения

Это говорит слиянию использовать мой значок манифеста и тему, а не другие библиотеки.

Надеюсь, это поможет, спасибо

shimi_tap
источник
6
Проблема все еще сохраняется для меня. Работает в Android Studio 1.1.
Боллинг
1
Благодарность! Сработал для меня
Сандип
4
Последние версии android 2.0. не работает. Кто бы ни ответил, должен обновить этот вопрос, если он имел в виду спасение поколений, иначе он скоро будет бесполезен
Karue Benson Karue
3
Студия 2.2 с сегодняшнего дня у всех есть это и не работает над этим
Прасад
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
блестящий ответ
Гунду Бандгар
11

У меня такая же ошибка, просто этот код решает мою проблему, я хочу поделиться с вами:

в 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, проверьте журнал сообщений, я думаю, это не зависит от студии Android.
Аднан Абдолла Заки
@ adnan9011, моя проблема заключалась в дублировании разрешений в файле манифеста.
Darush
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
Итак, какое решение?
itzhar
2

ПОЛУЧИЛ РЕШЕНИЕ ПОСЛЕ МНОГО ВРЕМЕНИ ЗАГРУЗКИ

просто возьмите ic_launcher и вставьте его в папку с чертежами,

Перейдите в свой манифест и измените android: icon = "@ drawable / ic_launcher"

Очистите свой проект и перестройте

Надеюсь, это поможет тебе

Исмаил Озил
источник
2

У меня возникла проблема с изменением значка с рисования на mipmap.

Я только пропустил линию

tools:replace="android:icon"

в манифесте.

Alecs
источник
1

По какой-то причине студия Android не любит вызывать значок приложения из папки с возможностью переноса. Итак, в этом случае я создал каталог ресурсов mipmap в папке res.

Щелкните правой кнопкой мыши папку res> новый> каталог ресурсов Android> тип ресурса: mipmap и теперь поместите туда любой значок, а затем укажите его в файле манифеста. Разделяю это, так как этот метод работал у меня.

android: icon: @ drawable / ic_launcher "

к

android: icon = "@ mipmap / ic_launcher"

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

Если ничего из этого не работает, закройте Android Studio. Перейдите в app / src / main, откройте файл AndroidManifest.xml в текстовом редакторе (например, sublime), удалите / замените строки ошибок, сохраните и снова откройте студию 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/…
dve
Не удалось найти метод useOldManifestMerger () для аргументов [true] в проекте ': app' типа org.gradle.api.Project.
DysaniazzZ
0

Для меня эта проблема возникла после обновления сервисов Google Play. Одна из библиотек, которые я использовал, включала эту библиотеку, используя "+" в своей ссылке на Gradel, например

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

Это создало проблему, поскольку минимальная версия, на которую нацелена эта библиотека, была меньше, чем та, на которую нацелена текущая версия сервисов Google Play. Я нашел это, просто заглянув в журналы.

Rarw
источник
0

В вашем .gradleизменении MinSDK, например:

  • build.gradle (Модуль: приложение)
    • перед: minSdkVersion 9
    • после: minSdkVersion 14

и т.п.

Бриллиант Фэй
источник
0

Я пробовал все решения, упомянутые выше

в Manifest.xml:

  • добавьте этот код в начало вашего XML-файла в теге manifest:

    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"
Messou
источник