Manifest合并失败:uses-sdk:minSdkVersion 14

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

注:这已经更新,以反映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 on /androiddev - http://www.reddit.com/r/androiddev/comments/297xli/howto_use_the_v21_support_libs_on_older_versions/)

另一个编辑

一定要看看下面@murtuza关于appcompat-v7的答案,如果它有帮助的话,请给它点赞!

另外,如果你正在导入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版本解决了这个问题。

解决方案1:

将uses-sdk更改为<uses-sdk tools:node="replace" />并添加xmlns:tools="http://schemas.android.com/tools"AndroidManifest.xml < / p >
 <?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:+'修改为build.gradle中的compile 'com.android.support:support-v4:20.+'。这将阻止gradle使用

  • .
  • 然而,如果你的任何外部依赖使用相同的。您可能需要等待他们更新相同的内容。

解决方案3:

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

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

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

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

假设您正在使用Support Repository,那么解决方法是注释或删除该行

< p > 21.0.0-rc1 在本地Maven回购清单文件/extras/android/m2repository/com/android/support-v4/maven-metadata.xml

别忘了,你应该编辑构建。Gradle在项目的“app”子文件夹中,而不是在项目的文件夹中。为了解决版本L的问题,我浪费了一天的工作时间。

你必须配置所有支持和appcompat库版本19 +

如果建议离开支持库的19个。+版本不工作,你可以尝试下一个技巧在你的AndroidManifest文件。

首先添加以下代码:

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

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

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

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

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

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

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

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

去你的房子,gradle。

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

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

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

添加版本20 +”。

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

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

在构建中。gradle文件,默认是compile 'com.android. exe。所以当你构建gradle项目时,它会考虑com.android.support:support-v4:21.0.0-rc1,因为最近的L开发者预览版本。

在下面一行中进行更改,它将解决问题。 把< / p >

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.+'.

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

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

这样做:

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

我把所有的解决方案在这里没有结果,所以我看在另一个地方,我发现了一种方法来欺骗IDE,所以你必须把一行在Mainfest使Gradle使用一个不同的,一个你放在构建。Gradle的台词是:

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

就是这样,而且很管用。

我希望这能有所帮助。

对于在Android工作室测试中面临这个问题的人来说,公认的答案并不能解决我的问题。导入一个从GitHub下载的项目,在我的构建中有以下内容。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级别的库和项目。

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

来自:

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

:

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

谢谢@Murtuza。你的回答帮助我解决了我的问题,但对我来说

compile 'com.android.support:support-v13:19.+ also, along with

< p > <代码>编译“com.android.support: support-v4:19 +”。 编译的com.android.support: appcompat-v7:19。+ < /代码> < / p > < p >从 <代码>编译的com.android.support: support-v4: + 编译的com.android.support: support-v7: + 编译的com.android.support: support-v13: + > < /代码 希望这可以帮助一些人

我有第二个解决方案:

  1. 解压https://dl.dropboxusercontent.com/u/16403954/android-21.zipsdk\platforms\
  2. < p >改变构建。它就像

    compileSdkVersion 21
    buildToolsVersion "20.0.0"
    
    
    defaultConfig {
    applicationId "package.name"
    minSdkVersion 10
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
    }
    
  3. add

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

    在Manifest中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" />

附注:您可以对所有需要的支持库进行此操作。

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

帮助我,从在这里

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

不再有效。

uses-sdk改为

<uses-sdk tools:overrideLibrary="com.packagename.of.libary.with.conflict" />
< p >并添加< br > xmlns:tools="http://schemas.android.com/tools"

.xml文件

我有一些项目,我喜欢针对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:文件-项目结构-选项卡口味-选择最小SDK版本,这是高于Manifest

唯一对我有用的是:

在项目。属性,我改变:

< p > cordova.system.library.1 = com.android.support: support-v4: + 来 cordova.system.library.1 = com.android.support: support-v4:20。+ < / p >

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

cordova build android -- --minSdkVersion=15

是的,它使用双双破折号,正如你所看到的。

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

minSdkVersion 14

在构建中。Gladdle文件,并使用错误消息中指定的

但问题是

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

所以我把14改成了15。Gladdle文件,它工作

试一试。

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

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

我做了下面的操作,效果很好。

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

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

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

只针对所需的minSdkVersion,即更改为所需的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"
}

解决方案:Manifest合并失败属性application@ppComponentFactory…

如果您正在使用最新的&最大的Firebase库或任何其他库,它们实际上使用AndroidX而不是android。支持的话,你可能会遇到Manifest合并失败的问题!!因此,在这种情况下,您的项目需要迁移到AndroidX。所以请点击链接: https://firebase.google.com/support/release-notes/android#update_-_june_17_2019 < / p > 或者观看这个视频。 < a href = " https://youtu。be/RgveQ4AY1L8" rel="nofollow noreferrer">https://youtu.be/RgveQ4AY1L8 谢谢你。< / p >