Android: ได้รับข้อผิดพลาด“ การควบรวม Manifest ล้มเหลว” หลังจากอัปเดตเป็น gradle เวอร์ชันใหม่


108

หลังจากยอมรับการอัปเดตโครงการเป็น 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

คำตอบ:


212

วางสิ่งนี้ไว้ที่ส่วนท้ายของ 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'
            }
        }
    }
}

เครดิตEugen Pechanec


1
ดีมากนี่เป็นวิธีแก้ปัญหาที่ได้ผลสำหรับฉันเมื่อสร้างแอป nativescript
ded

7
สิ่งนี้ได้ผลสำหรับฉันเช่นกันขอบคุณ @Vishal คุณช่วยอธิบายได้ไหมว่าเกิดอะไรขึ้นที่นี่ :)
Ismail Iqbal

3
details.useVersion '27.0.0'ตรวจสอบให้แน่ใจว่าจะใช้รุ่นล่าสุดของห้องสมุดการสนับสนุนซึ่งในขณะที่เขียนนี้เป็น มิฉะนั้นคุณจะไม่มีคุณสมบัติการสนับสนุนล่าสุดเช่นการกำจัดการแคสต์มุมมองซ้ำซ้อน
Drew Szurko

9
โปรดเพิ่มคำอธิบายบิตเกี่ยวกับเรื่องนี้ ใช้งานได้ แต่จะใช้งานได้กับเวอร์ชันและคุณสมบัติที่อัปเดตหรือไม่
Ghanshyam Nayma

1
หากใครก็ตามที่มีข้อผิดพลาด 'ไม่สามารถแก้ไข Symbol DependencyResolveDetails' ฉันแก้ไขได้โดยการลบ 'DependencyResolveDetails' (ฉันอ่านที่ไหนสักแห่งใน StackOverflow เกี่ยวกับการไม่ต้องการเนื่องจากมี Groovy ดังนั้นจึงสามารถทำงานได้แบบไดนามิก)
knjk04

90

คุณกำลังใช้ Android Support Libraries หลายเวอร์ชัน:

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-alpha125+

เลือกรุ่นคอนกรีตหนึ่งรุ่นและใช้กับทั้งสามอย่างนี้ เนื่องจากคุณ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'

ใช้25.3.1สำหรับไลบรารีสนับสนุนหรือbuildToolsVersion? สำหรับbuildToolsVersionฉันได้รับข้อผิดพลาดPackage Unavailable
tux-world

@ tux-world: "ใช้ 25.3.1 สำหรับไลบรารีการสนับสนุนหรือ buildToolsVersion?" - สำหรับไลบรารีที่รองรับ ดูคำตอบที่อัปเดตของฉัน
CommonsWare

1
ฉันทดสอบแล้ว แต่ปัญหาของฉันไม่ได้รับการแก้ไขต้องเป็นเวอร์ชันcompileSdkVersionใด
tux-world

ฉันได้รับข้อความนี้All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 26.0.0-alpha1, 25.3.1. Examples include com.android.support:support-compat:26.0.0-alpha1 and com.android.support:animated-vector-drawable:25.3.1
tux-world

1
@ tux-world: ไม่มีสิ่งใดในคุณที่build.gradleควรอ้างถึง26.0.0-alpha1อีกต่อไป ลองทำความสะอาดโครงการของคุณ (สร้าง> โครงการสะอาด) และดูว่าปัญหาหายไปหรือไม่ หากไม่เป็นเช่นนั้นคุณจะต้องติดตามสิ่งที่ดึงเข้าcom.android.support:support-compat:26.0.0-alpha1มาเช่นโดยการเรียกใช้รายงานการพึ่งพา Gradle
CommonsWare

18

ฉันเปลี่ยนเวอร์ชันไลบรารีการสนับสนุนทั้งหมดเป็น 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

เห็นด้วยคำตอบข้างต้นดี แต่สาเหตุของข้อผิดพลาดคือคุณตั้งค่าเวอร์ชันต่างๆในไฟล์ gradle ของคุณ เพียงใช้หรือ 26 หรือ 25 รองรับ
Andrew V.

ในกรณีของฉันเป็นเพราะminSdkVersion.
ผลไม้

10

คุณสามารถค้นหาว่าไลบรารีใดขึ้นอยู่กับไลบรารีการสนับสนุนที่ไม่ถูกต้องและไม่รวมไว้ในลักษณะนี้:

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

stripe-android ในกรณีของฉัน


คุณจะรู้ได้อย่างไร?
Zapnologica

@Zapnologica ลองลิสต์การพึ่งพางานไล่ระดับเช่นstackoverflow.com/questions/21645071/…
paynd

6

ฉันไม่ได้ใช้ไลบรารีเวอร์ชันต่างๆและได้รับข้อผิดพลาดเดียวกันมันเกิดขึ้นหลังจากลบbuildToolsVersionใน AS RC 1 แต่การเพิ่มtools:node="replace" ทำเคล็ดลับเพียงแค่เพิ่มสิ่งนี้ลงใน manifest.xml ของคุณภายใน<application ..../>บล็อก:

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

1
มีผลข้างเคียงเมื่อทำเช่นนี้หรือไม่? ยังใช้งานได้กับ Android Studio 3 ใหม่หรือไม่
Sakiboy

5

มันเกิดขึ้นเช่นเดียวกันกับฉัน ดูใน Gradle -> Build Gradle -> และตรวจสอบให้แน่ใจว่าความเข้ากันได้ตรงกันในบรรทัด "app compat" และ "support design" ที่คอมไพล์ทั้งคู่ควรมีเวอร์ชันเดียวกัน

จากนั้นเพื่อให้แน่ใจว่ามันจะเปิดตัวได้โดยไม่มีปัญหาไปที่ไฟล์ -> โครงสร้างโครงการ -> แอพและตรวจสอบแท็บที่เหมาะสมกับเวอร์ชัน build Tools มันควรจะเหมือนกับบรรทัดคอมไพล์การสนับสนุนของคุณในกรณีที่ฉันใส่ 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'*
}

นั่นคือสิ่งที่ฉันทำและได้ผล โชคดี!


3
  • อัปเดตไลบรารีการสนับสนุนของคุณเป็นเวอร์ชันล่าสุด

  • เปิดManifest Fileและเพิ่มลงในไฟล์ Manifest

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

  • และเพิ่มสำหรับรีไซเคิลดูใน >> build.gradle Module app:

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

  • แล้วคลิก: Sync Now


3

ฉันแก้ปัญหานั้นด้วยการวางสิ่งนี้ไว้ที่ส่วนท้ายของโมดูลแอป 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'
        }
    }
  }
}

คุณทำให้วันของฉันจริงๆ
Hamed Jaliliani

2

คำตอบได้รับการยอมรับ แต่สิ่งหนึ่งที่คุณสามารถทำได้คือกำหนดไลบรารีจากโครงสร้างโครงการของคุณ สิ่งที่คุณทำได้คือ:

  1. แสดงความคิดเห็นห้องสมุดทั้งหมดที่มีปัญหา
  2. ไปที่โครงสร้างโครงการของคุณ
  3. เพิ่มไลบรารีจากที่นั่นและจะซิงค์โดยอัตโนมัติและปัญหาจะดับลง
  4. หากปัญหายังคงมีอยู่ให้ลองดูจากบันทึกข้อผิดพลาดว่าต้องการไลบรารีใดหลังจากทำตาม 3 ขั้นตอนข้างต้นทั้งหมด

สิ่งที่เกิดขึ้นคือไลบรารีที่กำหนดไว้ล่วงหน้าตอนนี้ฉันกำลังใช้appcompat: 26.0.0-alpha1 ซึ่งจะใช้สิ่งที่เก่ากว่าเมื่อคุณเพิ่มสิ่งใหม่และพยายามแก้ไขด้วยของเก่า เมื่อคุณเพิ่มจากโครงสร้างโปรเจ็กต์ของคุณมันจะเพิ่มสิ่งเดียวกัน แต่มีสิ่งใหม่ ๆ ที่จะแก้ไข ปัญหาของคุณจะได้รับการแก้ไข


0

ข้อผิดพลาดสำหรับฉันคือ:

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 ของไลบรารีการสนับสนุนทั้งหมดและ v15.0.0 ของไลบรารี Firebase ทั้งหมดเมื่อฉันเห็นข้อผิดพลาด


0

ฉันได้อัปเดตโครงการ Android เก่าสำหรับ Wear OS แล้ว ฉันได้รับข้อความแสดงข้อผิดพลาดนี้ขณะสร้างโครงการ:

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.

build.gradle สำหรับแอป 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'การอ้างอิงช่วยแก้ปัญหาของฉันได้



-4

คุณลองอ่านลิงค์นี้

ข้อผิดพลาด: การดำเนินการล้มเหลวสำหรับงาน ': app: processDevDebugManifest' การควบรวมกิจการ Manifest ล้มเหลว: Attribute meta-data#android.support.VERSION@value value = (25.3.0) แล้ว usd รุ่น 26.0.0

: https://medium.com/@PongPloyAppDev/error-execution-failed-for-task-app-processdevdebugmanifest-48576be751

ใส่คำอธิบายภาพที่นี่


ฮะ? คุณพยายามจะพูดอะไร? วิธีนี้ช่วยได้อย่างไร
Sakiboy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.