[英]Android: Getting “Manifest merger failed” error after updating to a new version of gradle
接受将项目更新为gradle的新版本后,出现以下错误:
Error:Execution failed for task ':app:processDebugManifest'.
Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(26.0.0-alpha1) from [com.android.support:cardview-v7:26.0.0-alpha1] AndroidManifest.xml:24:9-38
is also present at [com.android.support:design:25.3.1] AndroidManifest.xml:27:9-31 value=(25.3.1).
Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:22:5-24:41 to override.
我怎么解决这个问题? 这是我的应用程序的build.gradle
文件:
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.sample.bookReader"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
...
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:multidex:+'
compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
compile 'com.android.support:cardview-v7:26.0.0-alpha1'
compile 'com.android.support:design:25+'
compile 'com.jakewharton:butterknife:8.2.1'
apt 'com.jakewharton:butterknife-compiler:8.2.1'
...
}
这是项目的build.gradle
:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
allprojects {
repositories {
jcenter()
maven { url "https://www.jitpack.io" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
我如何解决此错误,同时保持通过更新gradle版本所做的更改?
将其放在应用程序模块build.gradle的末尾:
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '25.3.0'
}
}
}
}
您正在使用多个版本的Android支持库:
compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
compile 'com.android.support:cardview-v7:26.0.0-alpha1'
compile 'com.android.support:design:25+'
两个是26.0.0-alpha1
,一个正在使用25+
。
选择一个具体版本并将其用于所有这三个版本。 由于您的compileSdkVersion
不是O
, 25.3.1
对所有这三个库都使用25.3.1
,结果:
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:cardview-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
我将所有支持库版本都更改为25.3.1,并像魅力一样工作:
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
您还需要将compileSdkVersion和targetSdkVersion更改为25:
compileSdkVersion 25
targetSdkVersion 25
您可以找出哪个库依赖于错误的支持库版本,并像这样排除它:
compile ('com.stripe:stripe-android:5.1.1') {
exclude group: 'com.android.support'
}
在我的情况下, stripe-android
。
我没有使用不同版本的库,并且遇到了相同的错误,这是在AS RC 1中删除buildToolsVersion
之后发生的,但是添加tools:node="replace"
达到目的,只需将其添加到<application ..../>
内的manifest.xml中<application ..../>
区块:
<meta-data
tools:node="replace"
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
这件事对我来说也是一样。 请参阅Gradle-> Build Gradle->,并确保兼容性在“ app compat”和“ support design”行中均匹配,它们应具有相同的版本。
然后要超级确定,它将毫无问题地启动,请转到“文件”->“项目结构”->“应用”,然后检查选项卡中的“构建工具”版本,它应该与您的支持编译行相同,以防万一我放了风味选项卡上的目标SDK版本也为25。
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-
core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
*compile 'com.android.support:appcompat-v7:25.3.1'*
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
*compile 'com.android.support:design:25.3.1'*
}
那就是我所做的工作。 祝好运!
将支持库更新到最新版本
打开Manifest File
,并将其添加到清单文件中
<uses-sdk tools:overrideLibrary="android.support.v17.leanback"/>
并在>> build.gradle Module app
添加recyclerview:
compile 'com.android.support:recyclerview-v7:25.3.1'
然后单击: Sync Now
我将其放在我的应用程序模块build.gradle的末尾来解决:
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '26.0.0'
}
}
}
}
答案是可以接受的,但是您还可以做的一件事是从项目结构中定义库。 您可以做的是:
现在发生的事情是预定义的库已关闭,现在我使用appcompat:26.0.0-alpha1 ,当您添加新内容并尝试使用旧内容来解决它时,它将使用旧版本的东西。 当您从项目结构中添加它时,它将添加相同的内容,但添加新的内容来解决它。 您的问题将得到解决。
对我来说,错误是:
Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(26.0.2) from [com.android.support:percent:26.0.2] AndroidManifest.xml:25:13-35
is also present at [com.android.support:support-v4:26.1.0] AndroidManifest.xml:28:13-35 value=(26.1.0).
Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:23:9-25:38 to override.
对我来说,解决方案是在我的项目Gradle文件中,需要更改com.google.gms:google-services版本。
我正在使用3.1.1版本:
classpath 'com.google.gms:google-services:3.1.1
我将其升级到3.2.1版后,该错误已解决:
classpath 'com.google.gms:google-services:3.2.1
当我看到错误时,我刚刚将所有库升级到最新版本,包括所有支持库的v27.1.1和所有Firebase库的v15.0.0。
我已经为Wear OS更新了旧的android项目。 构建项目时出现此错误消息:
Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(26.0.2) from [com.android.support:percent:26.0.2] AndroidManifest.xml:25:13-35
is also present at [com.android.support:support-v4:26.1.0] AndroidManifest.xml:28:13-35 value=(26.1.0).
Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:23:9-25:38 to override.
我的Wear应用程序build.gradle包含以下依赖项:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.google.android.support:wearable:2.4.0'
implementation 'com.google.android.gms:play-services-wearable:16.0.1'
compileOnly 'com.google.android.wearable:wearable:2.4.0'}
解决方案 :
将implementation 'com.android.support:support-v4:28.0.0'
添加到依赖项中解决了我的问题。
尝试删除元数据并重建项目。
你尝试阅读链接
错误:任务':app:processDevDebugManifest'的执行失败。 清单合并失败:属性元数据#android.support.VERSION@value value =(25.3.0),然后再使用VERSION 26.0.0
: https : //medium.com/@PongPloyAppDev/error-execution-failed-for-task-app-processdevdebugmanifest-48576be751
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.