首页 文章

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

提问于
浏览
226

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

24 回答

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

    帮助我,取自here

  • 11

    您必须使用版本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" />
    

    只是它,它的工作原理 .

    我希望它有所帮助 .

  • 0

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

  • 6

    这是为此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仓库列表文件中

  • 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级别,以使其正常工作 .

  • 311

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

  • 5

    Note: This has been updated to reflect the release of API 21, Lollipop. Be sure to download the latest 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 .

    Edit:

    如果您需要使用新视图(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/

    Another Edit

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

  • 54

    此外,如果您要导入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版本修复了问题 .

  • 8

    Solution 1:

    将uses-sdk更改为 <uses-sdk tools:node="replace" /> 并在 AndroidManifest.xml 中添加 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合并 .

    Solution 2:

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

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

    Solution 3:

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

    • 对support-v7重复相同操作

  • 0
    <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"

  • 3

    传递依赖性仍然会出现问题 . Gradle提供了一种强制使用特定版本依赖项的方法 .

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

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

    到你的build.gradle .

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

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

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

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

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

    我也有同样的问题,改变跟随帮助了我:

    从:

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

    至:

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

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

    cordova build android -- --minSdkVersion=15
    

    是的,你看到它时使用双双破折号 .

  • 69

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

    添加版本 20.+'

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

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

    尝试删除项目中的 build 文件夹并重新同步gradle项目以重建它 . 另外,和其他人一样在这篇文章中说过 - 而不是做这样的事情:

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

    做这个:

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

    谢谢@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:+' 希望这可能对某人有所帮助

  • 6

    我有一些项目,我更喜欢目标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:+'
    }
    
  • 4

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

  • 0

    我有第二个解决方案:

    • 解压缩 https://dl.dropboxusercontent.com/u/16403954/android-21.zipsdk\platforms\

    • 更改build.gradle之类的

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

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

    • 转到 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" />
    

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

  • 0

    唯一对我有用的是:

    在project.properties中,我更改了:

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

  • 0

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

    minSdkVersion 14
    

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

    但问题是

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

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

    试试看 .

相关问题