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?
Ответы
Ответ 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
Попробуйте удалить метаданные и пересобрать проект.
Ответ 13
попробуйте прочитать ссылку
Ошибка: выполнение выполнено для задачи ': app: processDevDebugManifest. Не удалось слияние манифеста: атрибут meta-data#[email protected] value = (25.3.0), а затем usd VERSION 26.0.0
: https://medium.com/@PongPloyAppDev/error-execution-failed-for-task-app-processdevdebugmanifest-48576be751
![введите описание изображения здесь]()