Uses-sdk не может иметь атрибут "tools: node"
Я обновил Android Studio прошлой ночью до 0.9.0, buildToolsVersion до 21.1.0 и gradle до 0.14.0, после этого я получаю эту ошибку
Ошибка: выполнение выполнено для задачи ': app: processDebugManifest'. Не удалось выполнить манифест слияния: элемент -sdk не может иметь атрибут "tools: node
Я прошлой ночью искал решение, я нашел это:
<uses-sdk tools:node="replace" />
Но, к сожалению, добавлена еще одна ошибка!
Ошибка: (10, 5) use-sdk не может иметь атрибут "tools: node"
Ошибка: (10, 5) Выполнение не выполнено для задачи ': app: processDebugManifest'.
Не удалось выполнить манифест слияния: элемент -sdk не может иметь атрибут "tools: node
Другое решение, которое я прочитал, чтобы не использовать поддержку-v4: 21, для меня я не использую его, так как я использую v13.
Ответы
Ответ 1
Решение: -
Добавьте эту строку в теги uses-sdk, как это: -
<uses-sdk
tools:node="merge" <----This line do the magic
android:minSdkVersion="14"
android:targetSdkVersion="19" />
И добавьте пространство имен инструментов в манифест: -
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" .....
.../>
Ответ 2
ОК, это не ответ, а временное обходное решение.
В соответствии с Gradle инструментами сборки примечания к выпуску эта проблема была исправлена в версии 0.13.2 (2014/09/26) < ш > Однако, похоже, это повторится в 0.14.0 (2014/10/31)
Вы можете отключить задачу слияния манифеста, чтобы создать проект на данный момент.
Добавьте в свой build.gradle
файл
следующее:
android.applicationVariants.all { variant ->
variant.processResources.manifestFile = file('src/main/AndroidManifest.xml')
variant.processManifest.enabled=false }
См. этот вопрос для справки.
Ответ 3
Я столкнулся с этим после обновления до Android Studio 1.0.0 rc4. Раньше я использовал, чтобы создавать проекты с более низкими версиями SDK, чем некоторые из библиотек, от которых они зависели. Оказывается, если вы удаляете инструменты: замените и снова сообщите ошибке компилятора с конфликтом слиянием манифеста, он предоставит вам гораздо лучшее решение:
<uses-sdk tools:overrideLibrary="com.google.android.gms" />
По крайней мере, библиотека Google Play Services была тем, с чем я столкнулся. На самом деле, вы можете перечислить целую группу, если вам нужно. Просто запятая - отделите имена пакетов. Возможно, вам придется запустить компилятор несколько раз, пока он не сообщит вам каждую библиотеку, которая вызывает проблемы.
Ответ 4
Мое решение
- Я удалил все
<uses-sdk tools:node="replace" />
из всех моих файлов manifest.xml
-
В моем файле base.gradle(один для всего проекта я Added
ext {
compileSdkVersion = 19
buildToolsVersion = "21"
minSdkVersion = 10
targetSdkVersion = 19
}
-
В моих модулях у меня есть это
// all modules
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
// in an application module
defaultConfig {
applicationId "com.something"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode appVersionCode
versionName appVersionName
}
Ответ 5
Проблема решена после обновления AS до v0.9.1 и Gradle до 0.14.1.
Спасибо, ребята, _
Обновление
Проблема снова появляется!
Обновление 2
Ниже приведено обходное решение для решения этой проблемы:
- Откройте проект с помощью инструментов Android Studio 0.8.14/ Gradle для сборки 0.13.2
- Создайте свой проект.
- Вернитесь в Android Studio 0.9.1/ Gradle инструменты построения 0.14.1
- gradlew assembleRelease теперь будет работать