在接受将项目更新为新版本的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.
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?这是我的应用程序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'
...
}
Run Code Online (Sandbox Code Playgroud)
这是项目的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
}
Run Code Online (Sandbox Code Playgroud)
如何在保持更新gradle版本所做的更改的同时修复此错误?
Vis*_*hal 206
把它放在app模块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'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Com*_*are 89
您正在使用多个版本的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+'
Run Code Online (Sandbox Code Playgroud)
两个是26.0.0-alpha1
,一个是使用25+
.
选择一个具体版本并将其用于所有这三个版本.由于您compileSdkVersion
不是O
,因此使用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'
Run Code Online (Sandbox Code Playgroud)
Dar*_*ush 18
我将所有支持库版本更改为25.3.1并且像魅力一样工作:
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
Run Code Online (Sandbox Code Playgroud)
您还需要将compileSdkVersion和targetSdkVersion更改为25:
compileSdkVersion 25
targetSdkVersion 25
Run Code Online (Sandbox Code Playgroud)
小智 9
您可以找出哪些库依赖于错误版本的支持库,并将其排除在外:
compile ('com.stripe:stripe-android:5.1.1') {
exclude group: 'com.android.support'
}
Run Code Online (Sandbox Code Playgroud)
stripe-android
在我的情况下.
小智 6
我没有使用不同版本的库并得到相同的错误,它发生buildToolsVersion
在AS RC 1中删除后,但添加tools:node="replace"
了诀窍,只需将其添加到<application ..../>
块内的manifest.xml中:
<meta-data
tools:node="replace"
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
Run Code Online (Sandbox Code Playgroud)
小智 5
它对我来说也是一样的.请参阅Gradle - > Build Gradle - >并确保兼容性在编译"app compat"和"support design"行中都匹配,它们应该具有相同的版本.
然后要确定,它会毫无问题地启动,转到文件 - >项目结构 - >应用程序并检查选项卡属性构建工具版本,它应该与您的支持编译行相同,以防万一我放目标SDK版本也是25,也可以在选项卡Flavors上找到.
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'*
}
Run Code Online (Sandbox Code Playgroud)
多数民众赞成我所做的和工作.祝好运!
归档时间: |
|
查看次数: |
133514 次 |
最近记录: |