ОШИБКА: атрибут приложения @ name слишком присутствует - PullRequest
0 голосов
/ 10 июля 2019

Здравствуйте, я разрабатываю 2 модуля A и B, и B зависит от A.

Последние два имеют класс Application для статического получения контекста.

И в двух модулях они есть.

Манифест модуля A:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="apps.com.a">

    <application android:name=".AA"/>

</manifest>

Манифест модуля B:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="apps.com.b">

    <application
        android:name=".BApp">
    </application>

</manifest>

Когда я пытаюсь выполнить Junit, я получаю следующую ошибку:

Manifest merger failed : Attribute application@name value=(apps.b.BApp) from [__tested_artifact__::blibrary] AndroidManifest.xml:14:18-72
    is also present at [:alibrary] AndroidManifest.xml:11:18-78 value=(apps.com.a.AApplication).
    Suggestion: add 'tools:replace="android:name"' to <application> element at manifestMerger2718201306699938665.xml:7:5-9:19 to override.

Любое представление о том, как решить эту проблему, я поставлю 'tools: replace = "android: name"' правильно, или могут быть ошибки?

1 Ответ

1 голос
/ 10 июля 2019

Да, вы можете использовать tools:replace="android:name" для решения этой проблемы

Согласно документам

Ваш файл APK может содержать только один файл AndroidManifest.xml, но ваш проект Android Studio может содержать несколько файлов, предоставляемых основным исходным набором, вариантами сборки и импортированными библиотеками. Поэтому при сборке приложения сборка Gradle объединяет все файлы манифеста в один файл манифеста, который упакован в ваш APK.

Средство слияния манифеста объединяет все элементы XML из каждого файла, следуя некоторой эвристике слияния и следуя предпочтениям слияния, которые вы определили с помощью специальных атрибутов XML. На этой странице описывается, как работает слияние в манифесте и как вы можете применять настройки слияния для разрешения конфликтов слияния.


tools:replace="attr, ..."

Заменить указанные атрибуты в манифесте с более низким приоритетом на атрибуты из этого манифеста. Другими словами, всегда сохраняйте значения манифеста с более высоким приоритетом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...