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


233

由于下载了最新的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

我遇到相同的错误错误:任务':app:processDebugManifest'的执行失败。>清单合并失败:uses-sdk:minSdkVersion 19不能小于库com.android.support:support-v4:21.0.0-rc1中声明的版本19
bobby.dhillon 2014年

我遇到了同样的异常minSdkVersion 15不能小于版本
15。SDKBuild

1
看来是个错误:code.google.com/p/android/issues/detail?id=72430现在的解决方法是在maven-metadata.xml中注释掉一行
Emanuel Canha 2014年

Answers:


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:+选择了显然需要L SDK的最新L发行候选版本(21.0.0-rc1)

编辑:

如果您需要使用新视图(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- http: //www.reddit.com/r/androiddev/comments/297xli/howto_use_the_v21_support_libs_on_older_versions/上的EddieRingle贷方)

另一个编辑

请确保在以下有关appcompat-v7的问题上看到@murtuza的答案,如果有帮助,请upvote!


3
从Maven编译的库呢?如何排除“旧”依赖?
2014年

4
@Arnaud compile(“ blah:blah:bla”){排除组:'com.android.support',模块:'support-v4'}
AndroidGecko 2014年

3
请注意,要使用CardView,RecyclerView和Palette,您还必须更改清单以免发生合并冲突问题。有关详细信息,请参见此
Michel

3
永远不要建议人们在依赖版本中使用+。始终指定要使用的库的确切版本(或在编写代码时可用)。甚至20. +也很糟糕。如果您依赖的库遵循此BAD惯例,请考虑排除其依赖关系并提供您自己的依赖关系版本。这样可以随时复制您的构建。请改进您的答案,并删除您在依赖版本中使用+的建议。
Daniele Segato 2014年

1
@DanieleSegato说什么。永远不要建议动态版本控制。这是不好的做法。
Xavier Ducrohet 2014年

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版本解决了该问题。


接得好!我的v7都没有版本。
RoundSparrow hilltx 2014年

以及支持v13的同一件事)
Defuera 2014年

1
我和appcompat_v7也不匹配,因为buildToolsVersion '20.0.0'android{}compile 'com.android.support:appcompat-v7:20.0+'dependencies {}不一样,所以我使它们相同(如下所示)。
Azurespot 2014年

1
在以后的版本中使用+标识符是一种不好的做法。指定确切的版本。我建议更新“com.android.support:appcompat-v7:19.+”这个“com.android.support:appcompat-v7:19.0.0”或者这是最新的一个。如果仍然遇到问题,请尝试从SDK Manager 更新支持库
sud007

55

解决方案1:

更改用途-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重复相同的步骤


就我而言,我还必须删除等效的appcompat-v7。
eipipuz 2014年

2
是的,不提供解决方案2作为选项。正确的依赖项管理(使用正确的版本)或使用解决策略是正确的解决方案。编辑Maven存储库只会使问题延迟,直到发布新的存储库为止。
Xavier Ducrohet 2014年

解决方案1 ​​+ 3挽救了我的性命:)
爬升

2
首选方案有效!我建议您添加一些有关为什么要这样做的细节。
Tejasvi Hegde 2014年


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

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


谢谢!比在每个依赖项中排除都容易:)
Sloy 2014年

8

在build.gradle文件中,默认情况下编译为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.+'.

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'
}

7

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

cordova build android -- --minSdkVersion=15

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


这样可以解决实际问题吗?不可以。它只能那样工作,但是cordova run android失败了。
Ionut Necula

@lonut您知道什么是实际问题吗?
ProllyGeek

就我而言,问题是我正在使用的名为的插件cordova-plugin-facebook4。独具一格,使cordova run android工作正常。不幸的是,我在任何地方都没有找到任何解决方案。我手动尝试将minSdkVersion自己添加到中,AndroidManifest但已被覆盖。仍在尝试找出答案。
Ionut Necula

@lonut我正在使用的某个应用程序中使用相同的插件,请告诉我是否可以提供帮助。但是,您需要查看build.gradle文件,也许如果您提供其他信息可以帮助您。
ProllyGeek

我终于通过将minSdk版本更改为15in 解决了它config.xml。该行:<preference name="android-minSdkVersion" value="14" />。这样,AndroidManifest文件也将使用新版本进行更新。
Ionut Necula'8

6

我也遇到了同样的问题,不断变化的关注帮助了我:

从:

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

至:

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

它不是代码。您需要在build.gradle文件中进行此更改。
min2bro 2014年

6

对于在Android Studio Beta中面临此问题的人们,可接受的答案并不能解决我的问题。导入从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级别,以使其正常工作。


这似乎确实是一个基本问题:“无论您在何处看到'com.android.support:support'” ...“确保您拥有最新的值”这就是它的大小!
Fattie 2014年

5

我通过在build.gradle中编辑以下行解决了该问题,并且可以正常工作!:-)

添加版本 20. +'

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

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

1
我不敢相信 除此以外,以上其他答案对我没有任何帮助。谢谢!!!请注意,我必须将我v4v7支持文件都更改为:20.+
Azurespot 2014年


4

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

如果建议不要使用19. +版本的支持库,则可以尝试使用AndroidManifest文件中的下一个技巧。

首先添加以下代码:

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

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

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

4

我在这里制作所有解决方案都没有结果,所以我去了另一个地方,我找到了一种欺骗IDE的方法,因此您必须在Mainfest中添加一行以使Gradle使用另一种方法,即您放在build.gradle上的行是:

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

只是它,而且它起作用。

希望对您有所帮助。


3
记得添加:xmlns:tools="http://schemas.android.com/tools"<manifest>-标签
SEB



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,它可以正常工作

试试看。


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"
    }

0

别忘了,您应该在项目的“ app”子文件夹中而不是在项目文件夹中编辑build.gradle。我已经度过了一个工作日,无法解决版本“ L”的问题。


0

尝试删除构建在项目文件夹(S)和重新同步gradle这个项目重建。另外,就像其他人在这篇文章中所说的-而不是像这样做:

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

做这个:

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

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:+' 希望这可能会帮助一些人


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:+'
}

0

在Android Studio 1.1.0中:文件-项目结构-选项卡风味-选择最低Manifest中的SDK版本


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\

解压支持,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您可以使用所有需要的支持库来执行此操作。


我已更改“ L”并重新启动了android studio,但是在构建项目(ctrl + f9)时遇到了同样的问题
Ankur Loriya

0

唯一对我有用的是:

在project.properties中,我更改了:

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


0

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


0

最好的方法是让Android Studio修复此问题。

我做了下面的工作,它工作正常。

  1. 在Android Studio中打开您的项目,将弹出错误消息,如果提供了修复它的链接,请单击它。

  2. 在Android Studio中重新打开您的项目,将弹出错误消息,如果没有在步骤1中提供该链接,则这次将出现一个链接,单击给定的链接进行修复。

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


0

解决方案:清单合并失败属性application @ ppComponentFactory ...

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

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


欢迎提供解决方案的链接,但是如果没有它,您应该确保您的回答也很有用。如果目标页面不可用,最好在链接周围添加上下文并描述要链接的教程中最相关的部分。
乔伊

很高兴收到您的来信#Joey。让我添加一些额外的描述。谢谢。
Subhojit Halder
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.