由于下载最新的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
答案 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
在我的情况下,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"
}
解决了该问题
Debug
答案 20 :(得分:0)
最好的方法是让Android Studio解决该问题。
我做了下面的事情,并且工作正常。
在Android Studio中打开您的项目,如果提供了修复此问题的链接,请点击该错误。
在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)
我有第二个解决方案:
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" />
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'