清单合并失败:uses-sdk:minSdkVersion 14

由于下载最新的SDK和安装Android Studio,我的项目无法build立。 我收到以下消息:

Error:Gradle: Execution failed for task ':SampleProject:processProdDebugManifest'. > Manifest merger failed : uses-sdk:minSdkVersion 14 cannot be smaller than version L declared in library com.android.support:support-v4:21.0.0-rc1 

注意:这已被更新以反映API 21,棒棒糖的发布。 一定要下载最新的SDK。

在我的模块之一,我有build.gradle中的以下内容:

 dependencies { compile 'com.android.support:support-v4:+' } 

改变这个

 dependencies { // do not use dynamic updating. compile 'com.android.support:support-v4:21.0.0' } 

解决了这个问题。

确保你没有在你的项目的任何地方做一般的包含com.android.support:support-v4:+或任何其他支持库(v7,v13,appcompat等)。

我假设问题是v4:+拿起候选版本(21.0.0-rc1)最新的L版本,显然需要L SDK。

编辑:

如果您需要使用新视图(CardView,RecyclerView和Palette),则以下内容应该可用:

 compile "com.android.support:cardview-v7:21.0.0" compile "com.android.support:recyclerview-v7:21.0.0" compile "com.android.support:palette-v7:21.0.0" 

(感谢EddieRingle / androiddev – http://www.reddit.com/r/androiddev/comments/297xli/howto_use_the_v21_support_libs_on_older_versions/

另一个编辑

请务必在下面看到关于appcompat-v7的@ murtuza的回答,如果有帮助的话请注意!

另外,如果你正在导入appcompat-v7库,请确保在其末尾标记了一个版本号,如下所示:

 compile 'com.android.support:support-v4:19.+' compile 'com.android.support:appcompat-v7:19.+' 

只更改了support-v4版本后,我仍然收到错误:

清单合并失败:uses-sdk:minSdkVersion 15不能小于库中声明的版本L com.android.support:support-v4:21.0.0-rc1

这有点混乱,因为看起来v4仍然是问题,但实际上,限制appcompat v7版本解决了这个问题。

解决scheme1:

AndroidManifest.xml中将uses-sdk更改为<uses-sdk tools:node="replace" />并添加xmlns:tools="http://schemas.android.com/tools"

  <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.demo.android" android:versionCode="16" android:versionName="3.3.1"> . . <uses-sdk tools:node="replace" /> . . </manifest> 

确保使用gradle 0.11及以上版本来使用Manifest合并。

解决scheme2:

  • 更改compile 'com.android.support:support-v4:+' compile 'com.android.support:support-v4:20.+'build.gradle compile 'com.android.support:support-v4:20.+' 。 这将防止gradle使用需要版本L的v4:21.0.0

  • 但是,如果您的任何外部依赖使用相同的。 你可能不得不等待他们更新。

解决scheme3:

  • 在您的文件<android-sdk>/extras/android/m2repository/com/android/support-v4/maven-metadata.xml删除/注释<version>21.0.0-rc1</version>

  • 对support-v7重复同样的操作

 <uses-sdk tools:node="replace" /> 

不再有效。

改用uses-sdk来

 <uses-sdk tools:overrideLibrary="com.packagename.of.libary.with.conflict" /> 

并在AndroidManifest.xml中添加xmlns:tools =“http://schemas.android.com/tools”;

传递依赖问题仍然存在。 Gradle提供了强制使用特定版本的依赖关系的方法。

例如,你可以添加如下内容:

 configurations.all { resolutionStrategy { force 'com.android.support:support-v4:20.+' force 'com.android.support:appcompat-v7:20.+' } } 

到你的build.gradle。

如果您想了解更多关于gradle解决策略的信息,请参阅本指南http://www.gradle.org/docs/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html

我在阅读相关问题时发现了这一点,我将在这里链接

在build.gradle文件中,默认编译为'com.android.support:support-v4:+',所以当你构buildgradle项目的时候会考虑com.android.support:support-v4:21.0.0-rc1因为最近的L开发者预览版本。

在下面的行中进行更改,它将解决问题。 更改

 compile 'com.android.support:support-v4:+' 

 compile 'com.android.support:support-v4:20.+' 

同样,使用v7-appcompat支持库时,请从中进行更改

compile 'com.android.support:appcompat-v7:+'

 compile 'com.android.support:appcompat-v7:20.+'. 

添加到上面的正确答案,问题仍可能发生由于库嵌套。 在这种情况下,请尝试以下示例:

 compile 'com.android.support:support-v4:20.+' compile ('com.github.chrisbanes.actionbarpulltorefresh:extra-abs:+') { // example exclude group: 'com.android.support', module:'support-v4' exclude group: 'com.android.support', module:'appcompat-v7' } 

我也有同样的问题,改变以下帮助我:

从:

 dependencies { compile 'com.android.support:support-v4:+' 

至:

 dependencies { compile 'com.android.support:support-v4:20.0.0' } 

对于使用cordova CLI构build混合应用程序的人来说,这个命令将有助于:

 cordova build android -- --minSdkVersion=15 

是的,它使用双重双破折号,因为你看到它。

对于在Android Studiotesting版中遇到此问题的人,接受的答案并不能解决我的问题。 导入从GitHub下载的项目,我有我的build.gradle文件中的应用程序提供了一个错误的以下内容:

  dependencies { compile 'com.android.support:support-v4:+' } 

但在我的外部库文件夹,我有这个文件夹:

 support-v4-21.0.0-rc1 //note the 21 

我通过更改依赖关系解决了上述问题:

 dependencies { compile 'com.android.support:support-v4:20.+' //20 used less than available strange but works } 

注意:您可能还需要下载比Android Studio当前可用的API级别更低的api级别,以便某些库和项目能够正常工作。

我通过在build.gradle中编辑下面的行解决了这个问题,它的工作原理! 🙂

join版本20. +

  dependencies { compile 'com.android.support:appcompat-v7:+' } 

 dependencies { compile 'com.android.support:appcompat-v7:20.+' } 

您必须configuration版本19的所有支持和appcompat库

如果使用19. +版本离开支持库的build议不起作用,您可以尝试AndroidManifest文件中的下一个提示。

首先添加这个代码:

 xmlns:tools="http://schemas.android.com/tools" 

然后,在应用程序级别(不是在应用程序内!)

 <uses-sdk tools:node="replace" /> 

我在这里没有任何结果的所有解决scheme,所以我看在另一个地方,我find了一个方法来欺骗的IDE,所以你必须在Mainfest的一条线,使Gradle使用一个不同的,一个你把build.gradle的行是:

 <uses-sdk tools:node="replace" /> 

只是它,它的工作。

我希望它有帮助。

 compile('com.android.support:support-v4:19.1.0'){ force = true } 

帮助我,从这里采取

你需要从build.gradle中移除compile'c​​om.android.support:support-v13:+ compile 'com.android.support:support-v13:+'

这是为这个btw https://code.google.com/p/android/issues/detail?id=72430提交的新bug

假设您正在使用支持库,解决方法是注释或删除行

21.0.0-rc1在/extras/android/m2repository/com/android/support-v4/maven-metadata.xml的本地Maven回购列表文件中

不要忘记,你应该在项目的“app”子文件夹中编辑build.gradle,而不是在项目的文件夹中。 我已经失去了一个工作日试图解决版本“L”的问题。

尝试删除项目中的构build文件夹并重新同步您的gradle项目以重build它。 而且,像其他人在这篇文章中所说的那样 – 而不是像这样做:

 compile 'com.android.support:support-v4:19.+' 

做这个:

 compile 'com.android.support:support-v4:19.1.0' 

谢谢@Murtuza。 你的回答帮助我解决了我的问题,但在我的情况

compile 'com.android.support:support-v13:19.+也一起

compile 'com.android.support:support-v4:19.+' compile 'com.android.support:appcompat-v7:19.+'

compile 'com.android.support:support-v4:+' compile 'com.android.support:support-v7:+' compile 'com.android.support:support-v13:+'希望这可能有助于一些

我有一些项目,我倾向于L.MR1(SDKv22)和一些我喜欢KK(SDKv19)的项目。 你的结果可能不同,但是这对我有效。

 // Targeting L.MR1 (Android 5.1), SDK 22 android { compileSdkVersion 22 buildToolsVersion "22" defaultConfig { minSdkVersion 9 targetSdkVersion 22 } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) // google support libraries (22) compile 'com.android.support:support-v4:22.0.0' compile 'com.android.support:appcompat-v7:22.0.0' compile 'com.android.support:cardview-v7:21.0.3' compile 'com.android.support:recyclerview-v7:21.0.3' } // Targeting KK (Android 4.4.x), SDK 19 android { compileSdkVersion 19 buildToolsVersion "19.1" defaultConfig { minSdkVersion 9 targetSdkVersion 19 } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) // google libraries (19) compile 'com.android.support:support-v4:19.1+' compile 'com.android.support:appcompat-v7:19.1+' compile 'com.android.support:cardview-v7:+' compile 'com.android.support:recyclerview-v7:+' } 

在Android Studio 1.1.0中:文件 – 项目结构 – 选项卡风格 – select高于清单中的最低SDK版本

我有第二个解决scheme:

  1. https://dl.dropboxusercontent.com/u/16403954/android-21.zip解压缩到sdk\platforms\
  2. 改变build.gradle

     compileSdkVersion 21 buildToolsVersion "20.0.0" defaultConfig { applicationId "package.name" minSdkVersion 10 targetSdkVersion 21 versionCode 1 versionName "1.0" } 
  3.  <uses-sdk tools:node="replace" /> 

    在清单中用xmlns:tools="schemas.android.com/tools" ;

  4. 转到sdk\extras\android\m2repository\com\android\support\support-v4\21.0.0-rc1\

解压support-v4-21.0.0-rc1.aar并像编辑AndroidManifest.xml一样

 <uses-sdk android:minSdkVersion="L" android:targetSdkVersion="L" /> 

 <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="21" /> 

PS您可以使用所有需要的支持库来执行此操作。

唯一能为我工作的是:

在project.properties中,我改变了:

cordova.system.library.1 = com.android.support:support-v4:+ to cordova.system.library.1 = com.android.support:support-v4:20. +