我昨晚已经将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
这里有一个解决这个问题的方法:
- 使用Android Studio 0.8.14/Gradle构建工具0.13.2打开您的项目
- 构建您的项目
- 切换回Android Studio 0.9.1/Gradle构建工具0.14.1
- gradlew组件Release现在可以工作了