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

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.

4b9b3361

Ответ 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 теперь будет работать