uses-SDK 元素不能具有 "tools:node" 属性



我昨晚已经将Android Studio更新到0.9.0,buildToolsVersion更新到21.1.0,gradle更新到0.14.0,之后我收到了这个错误

错误:任务":app:processDebugManifest"的执行失败。清单合并失败:uses-sdk元素不能具有"tools:node"属性

我花了昨晚的时间寻找解决方案,我发现:
<uses-sdk tools:node="replace" />

但不幸的是,又添加了一个错误!

错误:(10,5)use-sdk元素不能具有"tools:node"属性
错误:(10,5)任务":app:processDebugManifest"的执行失败
清单合并失败:uses-sdk元素不能具有"tools:node"属性

我读过的另一个解决方案是不使用support-v4:21,对我来说我不使用它,因为我使用的是v13。

解决方案:--

添加此行以使用类似于以下的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" .....
.../>

好吧,这不是答案,而是一个临时的解决方法。

根据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 }

请参阅此问题以供参考。

我在升级到Android Studio 1.0.0 rc4后遇到了这个问题。我以前一直在使用,这样我就可以制作比他们所依赖的一些库更低的最小SDK版本的项目。事实证明,如果你删除工具:用清单合并冲突替换并让编译器再次出错,它将为你提供更好的解决方案:

<uses-sdk tools:overrideLibrary="com.google.android.gms" />

至少,谷歌播放服务库是我遇到的。实际上,如果需要的话,你可以列出一大堆。只需用逗号分隔包名。您可能需要运行编译器几次,直到它"告诉"您每个导致问题的库。

我的解决方案

  • 我已经从所有manifest.xml文件中删除了所有<uses-sdk tools:node="replace" />
  • 在我的base.gradle文件(我添加了的整个项目的文件

    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
    }
    

在将AS更新到v0.9.1和Gradle更新到0.14.1后,问题已经解决。

谢谢大家

更新

问题再次出现!

更新2

这里有一个解决这个问题的方法:

  1. 使用Android Studio 0.8.14/Gradle构建工具0.13.2打开您的项目
  2. 构建您的项目
  3. 切换回Android Studio 0.9.1/Gradle构建工具0.14.1
  4. gradlew组件Release现在可以工作了

最新更新