清单合并失败:使用-sdk:minSdkVersion 14

时间:2014-06-26 19:00:52

标签: android android-studio android-gradle android-5.0-lollipop

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

28 个答案:

答案 0 :(得分: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"

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

另一个编辑

如果有帮助的话,请务必查看@ murtuza关于appcompat-v7及upvote的答案!

答案 1 :(得分: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版本修复了问题。

答案 2 :(得分:54)

解决方案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使用 需要版本L的v4:21.0.0

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

解决方案3:

  • 删除/评论<version>21.0.0-rc1</version>

  • 中的<android-sdk>/extras/android/m2repository/com/android/support-v4/maven-metadata.xml
  • 对support-v7

  • 重复相同操作

答案 3 :(得分:20)

<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文件中

答案 4 :(得分: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

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

答案 5 :(得分: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'
}

答案 6 :(得分: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.+'.

答案 7 :(得分:7)

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

cordova build android -- --minSdkVersion=15

是的,你看到它时会使用双倍双击。

答案 8 :(得分:6)

我也遇到了同样的问题,并且更改了以下内容帮助了我:

从:

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

为:

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

答案 9 :(得分: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级别更低的api级别才能使其正常工作。

答案 10 :(得分:5)

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

帮助我,取自here

答案 11 :(得分:5)

我通过编辑 build.gradle 中的以下行解决了问题,但它确实有效!的: - )

添加版本 20。+&#39;

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

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

答案 12 :(得分:4)

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

<uses-sdk tools:node="replace" />
只是它,它的工作原理。

我希望它有所帮助。

答案 13 :(得分:4)

您必须使用版本19。+

配置所有支持和appcompat库

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

首先添加此代码:

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

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

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

答案 14 :(得分: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仓库列表文件中

答案 15 :(得分:3)

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

中删除

答案 16 :(得分: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,并且可以正常工作

尝试一下。

答案 17 :(得分: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:+'
}

答案 18 :(得分:0)

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

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

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

答案 19 :(得分:0)

仅定位所需的minSdkVersion,即更改为所需的minSdkVersion 在我的情况下,14minSdkVersion

更改为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" } 解决了该问题

Debug

答案 20 :(得分:0)

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

我做了下面的事情,并且工作正常。

  1. 在Android Studio中打开您的项目,如果提供了修复此问题的链接,请点击该错误。

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

    < / li>

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

答案 21 :(得分:0)

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

答案 22 :(得分:0)

唯一对我有用的是:

在project.properties中,我改变了:

cordova.system.library.1 = com.android.support:支持-V4:+ 至 cordova.system.library.1 = com.android.support:支持-V4:20 +

答案 23 :(得分:0)

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

答案 24 :(得分:0)

我有第二个解决方案:

  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\

  5. 解压 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" />
    

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

答案 25 :(得分: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:+' 希望这可能对某人有所帮助

答案 26 :(得分:0)

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

答案 27 :(得分:0)

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

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

这样做:

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