当我添加第三方依赖项时,我得到一个清单合并失败,我该怎么做才能解决这个问题?

时间:2017-09-03 13:02:16

标签: android

错误:任务':app:processDebugManifest'执行失败。

  

清单合并失败:[com.android.support:design:26.0.2] AndroidManifest.xml:28:13-35中的属性meta-data#android.support.VERSION@value value =(26.0.2)       也出现在[com.android.support:support-v13:26.0.1] AndroidManifest.xml:28:13-35 value =(26.0.1)。       建议:添加'工具:replace =" android:value"'到AndroidManifest.xml:26:9-28:38的元素覆盖。   申请插件:' com.android.application'

app.gradle文件

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "com.dharquissandas.budget"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

allprojects{
    repositories{
        jcenter()
            maven{
                url "https://maven.google.com"
            }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    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:26.+'
    compile 'com.android.support:preference-v7:23.4.0'
    compile 'com.android.support:design:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:support-v4:26.+'
    compile 'com.afollestad.material-dialogs:core:0.9.4.7'
    compile 'com.afollestad.material-dialogs:commons:0.9.4.7'
    testCompile 'junit:junit:4.12'
}

android manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.dharquissandas.budget">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".add_expense"
            android:label="@string/title_activity_add_expense"
            android:theme="@style/AppTheme.NoActionBar" />
        <activity
            android:name=".add_income"
            android:label="@string/title_activity_add_income"
            android:theme="@style/AppTheme.NoActionBar" />
    </application>

</manifest>

这是有效的,然后突然它停止工作,当我想再次使用该应用程序时。我该怎么做才能解决这个错误?

8 个答案:

答案 0 :(得分:12)

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

这有助于我,将其添加到您的build.gradle中,并确保使用与&#39; 26.0.1&#39;相同的版本。

答案 1 :(得分:8)

您可以尝试按照向您的清单添加元数据的建议:

  

建议:将'tools:replace =“android:value”'添加到元素处   的AndroidManifest.xml

使用您的版本(26.0.2)添加此元数据。就我而言,我使用的是版本26.1.0并且它有效:

<meta-data
    tools:replace="android:value"
    android:name="android.support.VERSION"
    android:value="26.1.0" />

答案 2 :(得分:2)

对所有支持库使用相同版本,并在gradle中使用以下依赖项

    compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support:preference-v7:26.+'
compile 'com.android.support:design:26.+'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.android.support:support-v4:26.+'
compile ('com.afollestad.material-dialogs:core:0.9.4.7') {
    exclude module: 'support-v4'
    exclude module: 'com.android.support'
    exclude module: 'com.google.android'
}
compile ('com.afollestad.material-dialogs:commons:0.9.4.7'){
    exclude module: 'support-v4'
    exclude module: 'com.android.support'
    exclude module: 'com.google.android'
}

答案 3 :(得分:1)

据我所知,com.afollestad.material-dialogs:core:0.9.4.7使用26.0.1,因此在未升级材质对话框时也必须使用它。尝试为支持库设置确切版本而不是+

compile 'com.android.support:appcompat-v7:26.0.1'
compile 'com.android.support:design:26.0.1'
compile 'com.android.support:support-v4:26.0.1'

答案 4 :(得分:0)

我有同样的错误,我将26.0.1更改为26.0.2并且它有效

implementation 'com.android.support:appcompat-v7:26.0.2'
implementation 'com.android.support:recyclerview-v7:26.0.2'
implementation 'com.android.support:cardview-v7:26.0.2'

答案 5 :(得分:0)

感谢回答者给我一个线索。但是,上述答案都没有为我解决。

相反,我将支持库更改为其他版本(26.1.0),现在它就像一个魅力!

compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:design:26.1.0'
compile 'com.android.support:support-v4:26.1.0'

希望这对有类似问题的人有用。

答案 6 :(得分:0)

将此代码添加到您的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.1'
            }
        }
    }
}

答案 7 :(得分:0)

使用androidx库时,我也遇到了类似的异常,在gradle.properties中添加了对我的依赖关系解决的问题:

android.enableJetifier=true
android.useAndroidX=true