Подтвердить что ты не робот

Android: ошибка "Ошибка слияния манифеста" после обновления до новой версии gradle

После подтверждения обновления проекта до новой версии Gradle я получаю эту ошибку:

Error:Execution failed for task ':app:processDebugManifest'.
Manifest merger failed : Attribute meta-data#[email protected] 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?

4b9b3361

Ответ 1

Поместите это в конец вашего модуля приложения 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'
            }
        }
    }
}

Ответ 2

Вы используете несколько версий библиотек поддержки 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 для всех трех этих библиотек, в результате чего:

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'

Ответ 3

Я изменил все версии поддерживающих библиотек до 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

Ответ 4

Вы можете узнать, какая библиотека зависит от неправильной версии библиотеки поддержки, и исключить ее следующим образом:

compile ('com.stripe:stripe-android:5.1.1') {
    exclude group: 'com.android.support'
  }

stripe-android в моем случае.

Ответ 5

Я не использую разные версии библиотек и получил ту же ошибку, это произошло после удаления buildToolsVersion в AS RC 1, но добавив tools:node="replace" сделал трюк, просто добавьте это в свой манифест. xml внутри <application ..../> block:

<meta-data 
 tools:node="replace"
 android:name="com.google.android.gms.version"
 android:value="@integer/google_play_services_version" />

Ответ 6

Это то же самое для меня. См. В разделе Gradle → Build Gradle → и убедитесь, что совместимость совпадает как в списках компиляции "app compat", так и в "design design", они должны иметь одинаковую версию.

Тогда, чтобы быть уверенным, что он запустится без каких-либо проблем, перейдите в меню "Файл → Структура проекта → " и проверьте вкладку "Свойства сборки", она должна быть такой же, как и ваша строка компиляции поддержки, только в case я поставил целевую версию 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'*
}

Вот что я сделал и работал. Удачи!

Ответ 7

  • Обновите вашу библиотеку поддержки до последней версии

  • Откройте Manifest File и добавьте его в файл манифеста

  • <uses-sdk tools:overrideLibrary="android.support.v17.leanback"/>

  • И добавьте для recyclerview в >> build.gradle Module app:

  • compile 'com.android.support:recyclerview-v7:25.3.1'

  • И нажмите: Sync Now

Ответ 8

Ответ принят, но одна вещь, которую вы также можете сделать, - это определить библиотеки из вашей структуры проекта. Что вы можете сделать, это:

  • Комментировать все библиотеки, в которых идет проблема.
  • Перейти к структуре вашего проекта
  • Добавьте туда библиотеки, и она автоматически синхронизируется, и проблема исчезнет.
  • Если проблема не решена, попробуйте найти из журнала ошибок, какую библиотеку он требует после выполнения всех указанных выше трех шагов.

Что происходит с предопределенными библиотеками как сейчас, теперь я беру appomppat: 26.0.0-alpha1, он использует более старую версию того, что добавляет что-то новое и пытается ее разрешить со старыми вещами. Когда вы добавите ее из своей структуры проекта, она добавит то же самое, но с новыми продуктами, чтобы ее разрешить. Ваша проблема будет решена.

Ответ 9

Я решаю это, поместив это в конец моего модуля приложения 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'
        }
    }
  }
}

Ответ 10

Ошибка для меня была:

Manifest merger failed : Attribute meta-data#[email protected] 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 всех библиотек поддержки и v15.0.0 всех библиотек Firebase, когда я увидел ошибку.

Ответ 11

Я обновил старый проект Android для Wear OS. Я получил это сообщение об ошибке при сборке проекта:

Manifest merger failed : Attribute meta-data#[email protected] 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.

Приложение build.gradle for Wear содержит следующие зависимости:

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' в зависимости решило мою проблему.

Ответ 12

Попробуйте удалить метаданные и пересобрать проект.