Подтвердить что ты не робот

Ошибка манифеста слияния

В процессе переноса моих текущих проектов огромное количество приложений в Android Studio и Gradle. В настоящее время я придерживаюсь следующей проблемы:

Error:(87, 9) Execution failed for task ':App:processDebugManifest'.
> Manifest merger failed : Attribute [email protected] value=(@string/app_label) from AndroidManifest.xml:87:9
    is also present at ANDROID_APPLICATION:Library:unspecified:9:18 value=(@string/app_name)
    Suggestion: add 'tools:replace="android:label"' to <application> element at AndroidManifest.xml:82:5 to override

Я попытался добавить в основной файл AndroidManifest.xml следующие атрибуты:

tools:replace="android:label, *App Name*"
tools:replace="android:label, @string/app_label"
tools:replace="android:label"

Ни одно из этих определений атрибутов не работает. Что я делаю неправильно?

4b9b3361

Ответ 1

Попробуйте:

Добавьте это к <manifest/>

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

Добавьте это в <application/>

tools:node="replace"

Основанный на этом, он должен переопределить все элементы. Msgstr "Заменить декларацию о нижнем приоритете аннотированной."

Ответ 2

Фон

Когда файлы манифеста сливаются, возникает конфликт с атрибутом label.

В общем случае существует три типа файлов манифеста, которые необходимо объединить в один результирующий манифест приложения, здесь в порядке приоритета:

  • Продукт отличает и создает типы конкретных файлов манифеста.
  • Основной файл манифеста для приложения.
  • Файлы манифеста библиотеки.

Решение

Конфликт может быть разрешен одним из двух способов: -

Удалите конфликтующую метку

Удалите конфликтующий атрибут из файла манифеста библиотеки (или более низкого уровня).

В этом случае значение ANDROID_APPLICATION:Library:unspecified:9:18 value=(@string/app_name) имеет значение @string/app_name, отличное от значения в главном приложении. Поэтому, если это не требуется, то удалите его - просто удалите android:label="@string/app_name" из файла библиотеки AndroidManifest.xml.

Добавить атрибут, позволяющий автоматически разрешать конфликт

Есть несколько специальных маркеров атрибутов (в пространстве имен инструментов), которые могут использоваться для выражения конкретного решения о том, как разрешать конфликты.

В этом случае, чтобы явно заставить основное приложение android:label переопределить любые другие метки приложения (например, библиотечный файл), добавьте определение xmlns:tools="http://schemas.android.com/tools" в <manifest> node и tools:replace="label" в <application> node.

Вот пример - используйте это в главном приложении AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mycompany.myapp"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:label="@string/app_name"
        tools:replace="label"/>
</manifest>

Этот подход также будет работать с любыми другими конфликтующими атрибутами; например, если атрибут icon также находился в конфликте, его можно было изменить на tools:replace="label, icon".

Ответ 3

Если вам повезло, как и я, вы можете вручную исправить эту проблему с помощью взломанной работы.

Файлы AAR - это просто .zip файлы с расширением .aar. В моем случае я распаковал файл .aar, удалил оскорбительный android:label из библиотеки AndroidManifest.xml, а затем вытащил оставшиеся файлы с расширением .aar, и все, кажется, отлично работает с новым .aar.

FYI, это, по-видимому, известная ошибка в плагине android gradle.

Ответ 4

Я исправил ту же проблему. Решение для меня:

  • добавьте строку xmlns:tools="http://schemas.android.com/tools" в тег манифеста
  • добавить tools:replace=.. в тег манифеста
  • переместить android:label=... в тег манифеста

Пример здесь

Ответ 5

Я также столкнулся с теми же проблемами, и после того, как многие исследования обнаружили, что душа

  • Ваша версия min sdk должна быть такой же, как и у модулей, которые вы используете например: ваш модуль min sdk версии составляет 14, а ваша версия приложения min sdk - 9 Он должен быть таким же.
  • Если версия сборки вашего приложения и модулей не одинакова. Опять же, он должен был

Короче говоря, файл и манифест приложения build.gradle должны иметь одинаковые конфигурации

  1. В файле манифеста нет дубликаций, подобных тем же разрешениям, что и дважды.
  2. Если вы удалили любое действие из своего проекта, удалите его из файла манифеста, а также
  3. Иногда это связано с ярлыком, значком etc тега файла манифеста a) добавить строку xmlns: tools в тег манифеста б) добавить инструменты: replace = или tools: ignore = в теге приложения Пример
   <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.slinfy.ikharelimiteduk"
xmlns:tools="http://schemas.android.com/tools"
android:versionCode="1"
android:versionName="1.0" >
<application
    tools:replace="icon, label"
    android:label="myApp"
    android:name="com.example.MyApplication"
    android:allowBackup="true"
    android:hardwareAccelerated="false"
    android:icon="@drawable/ic_launcher"
    android:theme="@style/Theme.AppCompat" >
</application>
</manifest>

Рассматривая эти моменты, вы избавитесь от этого манифестного слияния с неудачной проблемой Проверьте мой пост: эта проблема возникает из-за проблемы в файле манифеста или файле build.gradle. Вы можете проверить мой пост https://wordpress.com/post/dhingrakimmi.wordpress.com/23