Сбой манифеста: использует-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 и т. д.) в любом месте вашего проекта.
Я предполагаю, что проблема в том, v4:+
подбирает последний вариант L-кандидата (21.0.0-rc1), для которого явно требуется 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"
(Благодарим Эдди Рингла на / 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 я все равно получил сообщение об ошибке:
Ошибка слияния манифеста: использует-sdk:minSdkVersion 15 не может быть меньше версии L, объявленной в библиотеке com.android.support:support-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 и выше, чтобы использовать слияние Manifest.
Решение 2:
+ Изменить
compile 'com.android.support:support-v4:+'
вcompile 'com.android.support:support-v4:20.+'
вbuild.gradle
, Это предотвратит использование Gradlev4: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
<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
Проблема все еще возникает с переходными зависимостями. 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
Я нашел это, читая соответствующий вопрос, который я буду связывать здесь
В файле 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.+'.
Если добавить правильные ответы выше, проблема все еще может возникнуть из-за вложенности библиотеки. В этом случае попробуйте как пример ниже:
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'
}
Для людей, создающих гибридные приложения с использованием cordova CLI, эта команда поможет:
cordova build android -- --minSdkVersion=15
да, он использует двойные двойные тире, как вы видели.
Для людей, столкнувшихся с этой проблемой в бета-версии Android Studio, принятый ответ не решил мою проблему. При импорте проекта, загруженного из GitHub, в файле 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
}
Примечание: вам также может понадобиться загрузить уровень API ниже, чем в настоящее время доступно в Android Studio, чтобы некоторые библиотеки и проекты работали правильно.
У меня тоже была такая же проблема, и мне помогло следующее:
от:
dependencies {
compile 'com.android.support:support-v4:+'
чтобы:
dependencies {
compile 'com.android.support:support-v4:20.0.0'
}
Я решил проблему, отредактировав строку ниже в build.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
}
Помогли мне, взяты отсюда
Я делаю все решения здесь безрезультатно, поэтому я смотрю в другом месте и нашел способ обмануть IDE, поэтому вы должны поместить строку в Mainfest, чтобы Gradle использовал другой, тот, который вы кладете на build.gradle строку:
<uses-sdk tools:node="replace" />
только это, и это работает.
Я надеюсь, что это помогает.
Вы должны настроить все библиотеки поддержки и appcompat с версией 19.+
Если рекомендация оставить библиотеку поддержки с версией 19.+ не работает, вы можете попробовать следующий совет в файле AndroidManifest.
Сначала добавьте этот код:
xmlns:tools="http://schemas.android.com/tools"
И затем, на уровне приложения (не внутри приложения!)
<uses-sdk tools:node="replace" />
Для меня такая проблема решается путем изменения
minSdkVersion 14
В файле build.gladdle и используйте тот, который указан в сообщении об ошибке
но проблема была
Manifest merger failed : uses-sdk:minSdkVersion 14 cannot be smaller than version 15 declared in library
Поэтому я изменил с 14 до 15 в файле build.gladdle, и он работает
попробуй.
Вам нужно удалить из build.gradle compile 'com.android.support:support-v13:+'
Вот новая ошибка, поданная для этого между прочим https://code.google.com/p/android/issues/detail?id=72430
Предполагая, что вы используете репозиторий поддержки, обходной путь - прокомментировать или удалить строку
21.0.0-rc1 в локальном файле со списком репозиториев Maven по адресу /extras/android/m2repository/com/android/support-v4/maven-metadata.xml
Просто выберите требуемый minSdkVersion
т.е. поменять на нужный В моем случае minSdkVersion
был 14
.
Переход на 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"
}
У меня есть несколько проектов, в которых я предпочитаю использовать 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 решить проблему.
Я сделал ниже, и это работало нормально.
Откройте ваш проект в Android Studio, ошибки будут всплывающими, если есть ссылка для исправления, нажмите на нее.
Снова откройте ваш проект в Android Studio, появятся сообщения об ошибках, на этот раз будет ссылка, если она не указана в шаге 1, нажмите на данную ссылку, чтобы исправить ее.
Обратите внимание, что обе операции заняли несколько минут, но исправили все проблемы.
Решение: слияние манифеста не удалось. Атрибут application@ppComponentFactory ...
Если вы используете какие-либо новейшие и лучшие библиотеки Firebase или любые другие библиотеки, они на самом деле используют AndroidX вместо android.support, тогда у вас может возникнуть проблема, поскольку слияние Manifest не удалось!! Итак, в этом случае ваш проект необходимо перенести на AndroidX. Так что перейдите по ссылке: https://firebase.google.com/support/release-notes/android
Или посмотрите это видео. https://youtu.be/RgveQ4AY1L8 Спасибо.
У меня есть второе решение:
- расстегнуть молнию
https://dl.dropboxusercontent.com/u/16403954/android-21.zip
вsdk\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" />
PS Вы можете сделать это со всеми необходимыми библиотеками поддержки.
Спасибо @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:+'
Надеюсь, что это может помочь кому-то
Единственное, что сработало для меня, это:
В project.properties я изменил:
cordova.system.library.1 = com.android.support: support-v4: + to cordova.system.library.1 = com.android.support: support-v4: 20. +
Вы просто измените минимальный уровень API с Build Settings -> Player Settings -> Other Settings -> Minimum SDK Level
в какую-то более высокую версию.
В Android Studio 1.1.0: Файл - Структура проекта - Варианты вкладок - Выберите минимальную версию SDK, которая выше, чем в Manifest
Попробуйте удалить папку (и) сборки в своем проекте и повторно синхронизировать ваш gradle-проект, чтобы восстановить его. Кроме того, как другие сказали в этом посте - вместо того, чтобы делать что-то вроде этого:
compile 'com.android.support:support-v4:19.+'
сделай это:
compile 'com.android.support:support-v4:19.1.0'
Не забудьте, вы должны отредактировать build.gradle в подпапке "app" вашего проекта, а не в папке проекта. Я потерял рабочий день, пытаясь решить проблему с версией "L".