Ошибка слияния манифеста: использование-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

24 ответов


Примечание: это было обновлено, чтобы отразить выпуск 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 и т. д.) В любом месте вашего проекта.

Я бы предположил, что проблема is 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/)

Другое Редактировать

не забудьте увидеть ответ @murtuza ниже относительно appcompat-v7 и upvote, если это поможет!


кроме того, если вы импортируете библиотеку appcompat-v7, убедитесь, что вы помечаете номер версии в конце ее следующим образом:

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

после изменения только версии support-v4, я все еще получил сообщение об ошибке:

ошибка слияния Манифеста: uses-sdk: minSdkVersion 15 не может быть меньше версии L, объявленной в библиотеке com.андроид.поддержка:поддержка-версии V4:21.0.0-rc1 и

Это было немного запутанно, потому что похоже, что v4 все еще проблема, но, на самом деле, ограничение версии appcompat v7 исправило проблему.


Решение 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 и выше для использования Манифеста слияния.

решение 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

  • повторите то же самое для поддержки-v7


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

больше не работает.

изменить использование-sdk на

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

и добавить xmlns: tools="http://schemas.android.com/tools - на андроидном фестивале.в XML


проблема по-прежнему возникает с транзитивными зависимостями. Gradle предлагает способ принудительного использования определенной версии зависимости.

например, вы можете добавить что-то вроде:

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

в сборку.градля.

Если вы хотите узнать больше о стратегиях разрешения gradle, обратитесь к этому руководству http://www.gradle.org/docs/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html

Я нашел это во время чтения соответствующий вопрос, который я свяжу здесь


в построении.файл gradle, это был по умолчанию compile ' com.андроид.поддержка: поддержка-v4:+' поэтому, когда вы создаете Gradle projecit, рассмотрите com.андроид.поддержка: поддержка-v4: 21.0.0-rc1 из-за недавнего выпуска L developer preview.

внесите изменения в следующую строку, и это решит проблему. Изменить

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

добавление к правильным ответам выше, проблема все еще может возникнуть из-за вложенности библиотеки. В этом случае попробуйте, как показано ниже:

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

у меня также была та же проблема, и изменение следующего помогло мне:

from:

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

в:

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

для людей, создающих гибридные приложения с помощью cordova CLI, эта команда поможет:

cordova build android -- --minSdkVersion=15

да, он использует двойные двойные тире, как вы видели.


для людей, сталкивающихся с этой проблемой в Android Studio бета, принятый ответ не решил мою проблему. Импортируя проект, загруженный из 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
}

Примечание: вам также может потребоваться загрузить уровень api ниже чем в настоящее время доступны в Android Studio для некоторых библиотек и проектов для этого, чтобы работать должным образом.


Я решил проблему, отредактировав строку ниже в построить.Gradle в и это работает! : -)

добавление версия 20.+'

С

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

до

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

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

помог мне, взято из здесь


вы должны настроить все поддержки и библиотеки appcompat с версией 19.+

Если рекомендация оставить библиотеку поддержки с 19.+ версия не работает вы можете попробовать следующий совет в вашем файле AndroidManifest.

Сначала добавьте этот код:

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

и затем, на уровне приложения (не внутри приложения!)

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

Я делаю все решения здесь без результата, поэтому я смотрю в другом месте, и я нашел способ обмануть IDE, поэтому вам нужно поместить строку в Mainfest, чтобы Gradle использовал другой, тот, который вы поставили на сборку.gradle строка:

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

просто это, и это работает.

надеюсь, это поможет.


нужно удалить из сборки.Gradle в compile 'com.android.support:support-v13:+'


вот новая ошибка, поданная для этого btw https://code.google.com/p/android/issues/detail?id=72430

предполагая, что вы используете репозиторий поддержки, обходным путем является комментарий или удаление строки

21.0.0-rc1 и в местных Мэйвен файл листинга РЕПО в /дополнительно/андроид/m2repository/ком/андроид/поддержка-В4/Мэйвен-метаданные.в XML


Не забывайте, вы должны редактировать сборку.gradle в подпапке " app " вашего проекта, а не в папке проекта. Я потерял рабочий день, пытаясь решить проблему с версии "L".


Попробуйте удалить построить папка(ы) в вашем проекте и повторно синхронизировать проект gradle для его восстановления. Также, как уже сказали в этом посте - вместо того, чтобы делать что-то вроде этого:

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

этого:

compile 'com.android.support:support-v4:19.1.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:+' Надеюсь, это может помочь кому-то


У меня есть некоторые проекты, где я предпочитаю нацеливаться на 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: файл-структура проекта-вкладка вкусы-выберите версию min SDK, которая выше, чем в Manifest


у меня есть второй вариант:

  1. распакуйте https://dl.dropboxusercontent.com/u/16403954/android-21.zip до sdk\platforms\
  2. изменить построение.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.0.0-rc1\

распакуйте поддержка-v4-21.0.0-rc1.ААР редактировать AndroidManifest.в XML как

С

<uses-sdk
        android:minSdkVersion="L"
        android:targetSdkVersion="L" />

в

<uses-sdk
        android:minSdkVersion="4"
        android:targetSdkVersion="21" />

P. S. Вы можете сделать это с помощью все библиотеки поддержки, что нужно.


единственное, что сработало для меня, это:

в проект.свойства, я изменил:

Кордова.система.библиотека.1=com.андроид.поддержка: поддержка-v4:+ к Кордова.система.библиотека.1=com.андроид.поддержка: поддержка-v4: 20.+


для меня такая проблема решается путем изменения

minSdkVersion 14

в построении.gladdle файл и использовать тот, который указан в сообщении об ошибке

но проблема была

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

поэтому я изменил с 14 на 15 в сборке.файл gladdle и он работает

дать ему попробовать.