235

由于下载了最新的 SDK 并安装了 Android Studio,我的项目无法构建。我收到以下消息:

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
4

28 回答 28

312

注意:这已更新以反映 API 21 Lollipop 的发布。请务必下载最新的 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"

(归功于 /androiddev 上的 EddieRingle - http://www.reddit.com/r/androiddev/comments/297xli/howto_use_the_v21_support_libs_on_older_versions/

另一个编辑

请务必在下面查看@murtuza 关于 appcompat-v7 的回答,如果有帮助,请点赞!

于 2014-06-26T19:13:44.973 回答
69

此外,如果您要导入 appcompat-v7 库,请确保在其末尾标记版本号,如下所示:

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

仅更改 support-v4 版本后,我仍然收到错误消息:

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

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

于 2014-06-26T23:15:50.360 回答
56

解决方案1:

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

 <?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 合并。

解决方案2:

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

  • 但是,如果您的任何外部依赖项使用相同的。您可能必须等待他们更新相同的内容。

解决方案3:

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

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

于 2014-06-27T12:48:56.487 回答
25
<uses-sdk tools:node="replace" />

不再工作。

更改uses-sdk

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

并添加
xmlns:tools="http://schemas.android.com/tools" AndroidManifest.xml 文件

于 2014-11-17T07:12:18.823 回答
11

传递依赖仍然会出现问题。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

我在阅读相应的问题时发现了这一点,我将在此处链接

于 2014-07-02T13:37:19.130 回答
8

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

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'
}
于 2014-07-02T01:50:59.037 回答
8

在 build.gradle 文件中,默认情况下是 compile 'com.android.support:support-v4:+' 所以当你构建 gradle 项目时会考虑 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.+'.
于 2014-07-05T21:17:15.800 回答
7

对于使用 cordova CLI 构建混合应用程序的人,此命令将有所帮助:

cordova build android -- --minSdkVersion=15

是的,正如您所见,它使用双双破折号。

于 2016-04-28T01:47:54.063 回答
6

对于在Android Studio测试版中面临这个问题的人来说,接受的答案并没有解决我的问题。导入从 GitHub 下载的项目,我的 app 的 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 级别,以使某些库和项目正常工作。

于 2014-07-23T16:52:10.470 回答
6

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

从:

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

到:

dependencies {
 compile 'com.android.support:support-v4:20.0.0'
}
于 2014-08-17T16:47:28.373 回答
5

我通过在build.gradle中编辑下面的行解决了这个问题,它可以工作!:-)

添加版本 20.+'

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

dependencies {
    compile 'com.android.support:appcompat-v7:20.+'
}
于 2014-07-03T11:27:45.887 回答
5
compile('com.android.support:support-v4:19.1.0'){
    force = true
}

帮助了我,取自这里

于 2014-09-25T06:50:49.687 回答
4

您必须使用版本 19.+ 配置所有支持和 appcompat 库。

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

首先添加这段代码:

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

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

<uses-sdk tools:node="replace" />
于 2014-07-01T13:52:34.287 回答
4

我在这里做了所有的解决方案都没有结果,所以我在另一个地方看,我找到了一种欺骗 IDE 的方法,所以你必须在 Mainfest 中放置一行以使 Gradle 使用不同的,即你把 build.gradle 这行是:

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

只是它,它工作。

我希望它有所帮助。

于 2014-07-22T17:16:08.753 回答
3

您需要从 build.gradle 中删除compile 'com.android.support:support-v13:+'

于 2014-06-27T12:55:09.230 回答
3

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

假设您使用的是支持存储库,解决方法是注释或删除该行

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

于 2014-06-28T06:58:37.593 回答
1

对我来说,这样的问题是通过改变

minSdkVersion 14

在 build.gladdle 文件中并使用错误消息中指定的文件

但问题是

Manifest merger failed : uses-sdk:minSdkVersion 14 cannot be smaller than version 15 declared in library

所以我在 build.gladdle 文件中从 14 更改为 15 并且它可以工作

试试看。

于 2018-06-21T07:16:31.863 回答
1

只需针对所需的minSdkVersion即更改为所需的在我的情况下minSdkVersion14.

更改以minSdkVersion 16解决问题

compileSdkVersion 29
    defaultConfig {
        applicationId "e.futaaapp"
        minSdkVersion 14
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

compileSdkVersion 29
    defaultConfig {
        applicationId "e.futaaapp"
        minSdkVersion 16
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
于 2019-07-17T10:35:57.833 回答
0

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

于 2014-07-01T08:01:19.150 回答
0

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

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

做这个:

compile 'com.android.support:support-v4:19.1.0'
于 2014-07-07T15:52:16.707 回答
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:+' 希望这可能对某人有所帮助

于 2014-08-21T18:45:32.320 回答
0

我有第二个解决方案:

  1. 解压https://dl.dropboxusercontent.com/u/16403954/android-21.zipsdk\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您可以使用所有需要的支持库来执行此操作。

于 2014-09-08T21:21:04.890 回答
0

我有一些我更喜欢针对 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:+'
}
于 2015-04-01T07:17:34.700 回答
0

在 Android Studio 1.1.0 中:文件 - 项目结构 - 选项卡风格 - 选择高于清单中的 Min SDK 版本

于 2015-04-06T14:45:58.627 回答
0

唯一对我有用的是:

在 project.properties 中,我更改了:

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

于 2015-09-18T18:52:40.457 回答
0

您只需将最低 API 级别从更改Build Settings -> Player Settings -> Other Settings -> Minimum SDK Level为更高版本。

于 2019-02-01T18:26:26.860 回答
0

最好的方法是让 Android Studio 解决这个问题。

我做了下面的,它工作得很好。

  1. 在 Android Studio 中打开你的项目,会弹出错误,如果有修复它的链接,请点击它。

  2. 在Android Studio中重新打开你的项目,会弹出错误,如果步骤1中没有给出链接,这次会有一个链接,点击给定的链接修复它。

请注意,这两个操作都花费了几分钟的时间,但解决了所有问题。

于 2019-05-19T07:15:10.487 回答
0

解决方案:Manifest merge failed 属性 application@ppComponentFactory ...

如果您使用任何最新和最棒的 Firebase 库或任何其他库,这些库实际上使用的是 AndroidX 而不是 android.support,那么您可能会遇到清单合并失败的问题!因此,在这种情况下,您的项目需要迁移到 AndroidX。所以请点击链接: https ://firebase.google.com/support/release-notes/android#update_-_june_17_2019

或观看此视频。 https://youtu.be/RgveQ4AY1L8 谢谢。

于 2019-07-30T21:26:51.843 回答