2016-02-01 4 views
1

Я запускаю Android Studio 2.0 Beta 3. У меня есть проект, который зависит от внешней библиотеки. Когда я создаю с помощью Android Studio, появляется следующее сообщение об ошибке:Ошибка сборки Android Studio: manifestMergerXXXX?

($my_project_path)/build/intermediates/manifest/tmp/manifestMerger354333932548019277.xml:17:9-36 Error: 
Attribute [email protected] value=(false) from [debug] AndroidManifest.xml:17:9-36 
is also present at [($library)] AndroidManifest.xml:12:9-35 value=(true) 
Suggestion: add 'tools:replace="android:allowBackup"' to <application> element at manifestMerger354333932548019277.xml:7:5-9:19 to override 
Error:Execution failed for task ':$(project):processDebugAndroidTestManifest'. 
> java.lang.RuntimeException: Manifest merger failed : Attribute [email protected] value=(false) from [debug] AndroidManifest.xml:17:9-36 
is also present at [($library)] AndroidManifest.xml:12:9-35 value=(true) 
Suggestion: add 'tools:replace="android:allowBackup"' to <application> element at manifestMerger354333932548019277.xml:7:5-9:19 to override 

Это очень странно. Android Studio предлагает мне отредактировать продукт промежуточного этапа сборки, чтобы завершить компиляцию? Кроме того, когда я смотрю на исходный файл AndroidManifest.xml, верхний уровень уже определяет атрибут «tools-replace» как «android: allowBackup». Короче говоря, я понятия не имею, почему я должен получать это сообщение. Кроме того, моя сборка отлично работает из командной строки. Какие-либо предложения?

EDIT на основе комментариев: Некоторые комментаторы отметили, что мне нужно следовать очень четким направлениям в сообщении об ошибке, только эти комментаторы отсутствуют, что сообщение об ошибке направляет меня на редактирование промежуточного продукта сборки.

Чтобы быть предельно ясным: продукт промежуточной сборки не является чем-то, что система сборки должна КОГДА-ЛИБО, направлять пользователя на изменение. Это по определению что-то для использования только системы построения. Его единственным дополнительным использованием является сохранение состояния, чтобы пользователь мог устранить неисправные сборки. Тот факт, что Android Studio говорит мне об изменении этого файла, свидетельствует о том, что что-то серьезно нарушено, как в Android Studio, так и, скорее всего, в моих сценариях конфигурации и/или сборки. Но что?

Для уточнения, здесь <application> элемента из проекта, который включает в себя библиотеку:

<application 
    android:label="@string/app_name" 
    android:allowBackup="false" 
    tools:replace="android:allowBackup"> 
    <...> 
</application> 

Так как вы можете видеть, я объявляющую сам элемент, Android Студия жалуется, именно так, как я я прошу. Кроме НЕ! Потому что Android Studio просит меня изменить слитый AndroidManifest.xml - ясно, что я не должен был делать, потому что это продукт сборки. Этот проект строится на всех машинах моих коллег, потому что они не обновлялись до последней версии Android Studio. Сейчас это на мне, и, честно говоря, я считаю, что лучше всего для меня - удалить Android Studio и начать все заново.

ответ

0

Что говорится в том, что библиотека, на которую вы полагаетесь, также имеет аналогичный атрибут, который запрещает андроиду объединять этот манифест с вашим манифестом. Когда Android строит ваш apk, он объединит файлы манифеста из разных проектов и попытается объединить их все для создания артефакта для варианта сборки. Android - это в основном многопроектная сборка Gradle. Поэтому вы должны сами разрешить конфликт.

+0

См. Правки выше. –

+0

Это не проблема с андроид-студией. Я уверен, это похоже на конфликт Git, вам нужно разрешить конфликт, прежде чем продолжить.Ваша проблема в том, что в вашей зависимости от библиотеки указанному атрибуту присваивается значение true, но в вашем манифесте оно установлено в значение false, которое явно является конфликтом, который необходимо разрешить для слияния. – Dummy

+0

Нет, не конфликт git. Ошибка возникает из файла, который создает граду в процессе сборки. –

5

Сообщение об ошибке говорит вам, как решить этот вопрос

Suggestion: add 'tools:replace="android:allowBackup"' to <application> element 

В основном вы объявляли манифеста атрибут allowBackup дважды. Однажды в файле AndroidManifest.xml и снова в библиотеке (возможно, через gradle).

FYI в этом случае победит градация.

+0

См. Правки выше. –

0

Я вернулся в Android Studio 1.5.1, и я могу создавать и запускать без каких-либо проблем.

Смежные вопросы