ไลบรารี com.android.support ทั้งหมดต้องใช้ข้อมูลจำเพาะรุ่นที่แน่นอน


788

หลังจากอัปเดตเป็น android studio 2.3 ฉันได้รับข้อความแสดงข้อผิดพลาดนี้ ฉันรู้ว่ามันเป็นเพียงคำใบ้เมื่อแอปทำงานตามปกติ แต่มันแปลกจริงๆ

ไลบรารี com.android.support ทั้งหมดต้องใช้ข้อมูลจำเพาะรุ่นที่แน่นอน (เวอร์ชั่นที่ผสมกันอาจทำให้เกิดข้อผิดพลาดขณะทำงาน) พบรุ่น 25.1.1, 24.0.0 ตัวอย่างเช่น com.android.support:animated-vector-drawable:25.1.1 และ com.android.support:mediarouter-v7:24.0.0

ป้อนคำอธิบายรูปภาพที่นี่

ระดับของฉัน:

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'
    })
    testCompile 'junit:junit:4.12'

    compile 'com.android.support:appcompat-v7:25.1.1'
    compile 'com.android.support:support-v4:25.1.1'
    compile 'com.android.support:design:25.1.1'
    compile 'com.android.support:recyclerview-v7:25.1.1'
    compile 'com.android.support:cardview-v7:25.1.1'
    compile 'com.google.android.gms:play-services-maps:10.2.0'
    compile 'com.google.android.gms:play-services:10.2.0'

    compile 'io.reactivex.rxjava2:rxjava:2.0.1'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.jakewharton:butterknife:8.4.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
    compile 'com.blankj:utilcode:1.3.6'
    compile 'com.orhanobut:logger:1.15'
    compile 'com.facebook.stetho:stetho:1.4.2'

    provided 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.ryanharter.auto.value:auto-value-parcel:0.2.5'

    compile 'com.mikepenz:iconics-core:2.8.2@aar'
    compile('com.mikepenz:materialdrawer:5.8.1@aar') { transitive = true }
    compile 'com.mikepenz:google-material-typeface:2.2.0.3.original@aar'
    compile 'me.zhanghai.android.materialprogressbar:library:1.3.0'
    compile 'com.github.GrenderG:Toasty:1.1.1'
    compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.8.0'
    compile 'com.github.MAXDeliveryNG:slideview:1.0.0'

    compile 'com.facebook.fresco:fresco:1.0.1'
    compile 'com.github.bumptech.glide:glide:3.7.0'

    compile 'com.google.maps.android:android-maps-utils:0.4.4'
    compile 'com.github.jd-alexander:library:1.1.0'
}

เพิ่มสิ่งนี้ไปยัง projectBuild.Gradle โครงการย่อย {project.configurations.all {resolutionStrategy.eachDependency {รายละเอียด -> ถ้า (details.requested.group == 'com.android.support' &&! details.requested.name.contain (multidex ')) {details.useVersion "26. +"}}}}
Sunil Chaudhary

คำตอบ:


906

คุณสามารถแก้ปัญหานี้ด้วยหนึ่งในวิธีแก้ไขปัญหาต่อไปนี้:

ปรับปรุง:

ในฐานะที่เป็นของ Android สตูดิโอ 3.0 มันจะกลายเป็นเรื่องง่ายขึ้นเพราะตอนนี้มันแสดงคำแนะนำที่เป็นประโยชน์มากขึ้นดังนั้นเราจะต้องทำตามคำใบ้
ตัวอย่างเช่น: 1]

ไลบรารี com.android.support ทั้งหมดต้องใช้ข้อมูลจำเพาะรุ่นที่แน่นอน (เวอร์ชั่นที่ผสมกันอาจทำให้เกิดข้อผิดพลาดขณะทำงาน) พบรุ่น 27.0.2, 26.1.0 ตัวอย่างเช่น com.android.support:animated-vector-drawable:27.0.2 และ com.android.support:customtabs:26.1.0

มีการรวมกันของห้องสมุดหรือเครื่องมือและห้องสมุดที่เข้ากันไม่ได้หรืออาจทำให้เกิดข้อบกพร่อง ความเข้ากันไม่ได้อย่างหนึ่งอย่างใดอย่างหนึ่งกำลังรวบรวมกับเวอร์ชันของไลบรารีการสนับสนุน Android ที่ไม่ใช่เวอร์ชันล่าสุด (หรือโดยเฉพาะอย่างยิ่งเวอร์ชันที่ต่ำกว่า targetSdkVersion ของคุณ)

การแก้ไข:
เพิ่มไลบรารีอย่างชัดเจนด้วยเวอร์ชันเก่า แต่ด้วยหมายเลขเวอร์ชันใหม่
ในกรณีของฉันcom.android.support:customtabs:26.1.0ดังนั้นฉันต้องเพิ่ม:

implementation "com.android.support:customtabs:27.0.2"  

ie: นำไลบรารี่จากไอเท็มที่สองและนำไปใช้กับหมายเลขเวอร์ชันจากไอเท็มแรก

หมายเหตุ: อย่าลืมกดซิงค์ทันทีเพื่อให้ gradle สามารถสร้างกราฟการขึ้นต่อกันและดูว่ามีข้อขัดแย้งเพิ่มเติมอีกหรือไม่

คำอธิบาย:
คุณอาจสับสนกับข้อความแสดงข้อผิดพลาดเนื่องจากไม่ได้ใช้งานcustomtabsดังนั้นฉันจึงมีข้อขัดแย้ง !!
ดี .. คุณไม่ได้ใช้มันโดยตรง แต่หนึ่งในห้องสมุดของคุณใช้รุ่นเก่าcustomtabsภายในดังนั้นคุณต้องขอโดยตรง

หากคุณอยากรู้ว่าห้องสมุดใดของคุณที่รับผิดชอบเวอร์ชั่นเก่าและอาจขอให้ผู้เขียนอัปเดต lib ของเขาให้เรียกใช้รายงานการพึ่งพา Gradle ดูคำตอบเก่า ๆ

จดบันทึกสิ่งนี้


คำตอบเก่า:

แรงบันดาลใจจากคำตอบ CommonsWare :

เรียกใช้รายงานการพึ่งพา Gradle เพื่อดูว่าต้นไม้ทั้งหมดของคุณคืออะไร

จากตรงนั้นคุณจะเห็นว่าหนึ่งในห้องสมุดของคุณกำลังขอห้องสมุดสนับสนุน Android รุ่นต่าง ๆ สำหรับสิ่งที่ต้องการคุณสามารถขอได้โดยตรงกับเวอร์ชั่น 25.2.0 หรือใช้แนวทางแก้ไขข้อขัดแย้งอื่น ๆ ของ Gradle เพื่อรับเวอร์ชันเดียวกัน


ปรับปรุง:

ตั้งแต่เวอร์ชันปลั๊กอิน gradle: 3.0 compileถูกแทนที่ด้วยimplementationหรือapiดูคำตอบนี้สำหรับความแตกต่าง

ดังนั้นใช้แทน:

./gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

หรือสำหรับ windows cmd:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

และค้นหาเวอร์ชันที่ขัดแย้งกัน

สำหรับฉันข้อผิดพลาดหายไปหลังจากลบ com.google.android.gms:play-services:10.2.0

และรวมเท่านั้นcom.google.android.gms:play-services-location:10.2.0และcom.google.android.gms:play-services-maps:10.2.0เนื่องจากเป็นบริการเล่นสองรายการเท่านั้นที่ฉันใช้

ฉันคิดว่าการgms:play-servicesพึ่งพาส่วนประกอบเก่า ๆ ของไลบรารีการสนับสนุนดังนั้นเราจึงจำเป็นต้องเพิ่มองค์ประกอบเหล่านั้นอย่างชัดเจน


สำหรับ AS 3.0 ขึ้นไป

วิ่ง:

./gradlew -q dependencies <module-name>:dependencies --configuration implementation

ตัวอย่าง:

./gradlew -q dependencies app:dependencies --configuration implementation

หากมีคนรู้วิธีที่ดีกว่าในปลั๊กอิน gradle ใหม่โปรดแจ้งให้เราทราบ


3
com.google.android.gms:play-services:10.2.0รองรับ SDK 14 และสูงกว่าหากคุณต้องการใช้ด้านล่าง SDK 14 คุณต้องใช้เวอร์ชัน10.0.1ดังกล่าวในstackoverflow.com/a/42315590/6248491
Sneh Pandya

2
@humazed noob คำถามฉันจะรันคำสั่งใน Android Studio ได้ที่ไหน
Haikal Nashuha

1
ในสถานี แต่ก่อนอื่นให้ลองใช้บริการการเล่น
อับอาย

1
ฉันเป็นคนเดียวที่คิดว่านี่เป็นความวิกลจริต? ผมแค่อยาก AdMob และ Facebook และพวกเขาปฏิเสธที่จะทำงานร่วมกัน ....
เจ

3
การชี้ให้เห็นว่าexamples includeข้อความในข้อความแสดงข้อผิดพลาดแสดงตัวอย่างจริงจากโครงการของคุณไม่ใช่ตัวอย่างทั่วไปที่ชัดเจนของประเภทปัญหา นำไลบรารี่จากไอเท็มที่สองและนำไปใช้กับหมายเลขเวอร์ชันจากไอเท็มแรก
Benjamin Kershner

203
  1. ไปที่project/.idea/librariesโฟลเดอร์ในระบบไฟล์ของคุณและดูว่าไลบรารีใดแตกต่างกัน
  2. คุณจะต้องรวมไลบรารีเหล่านี้ด้วยรุ่นเดียวกันในbuild.gradleไฟล์ของคุณ
  3. จากนั้นซิงค์โครงการของคุณ

เช่น:

compile 'com.android.support:appcompat-v7:25.2.0'

// Wrong library version found on 1st point
compile 'com.android.support:customtabs:25.2.0'

จุดดี. ฉันไม่เคยคิดถึงการดูว่าอันใดอันที่จริงแล้วผิด : S ขอบคุณ!
Tobias Reich

ใช้งานได้เมื่อวิธีการแก้ไขอัตโนมัติแบบ gradle ไม่เป็นเช่นนั้นขอบคุณ
Odaym

10
ใน / ไฟล์โครงการ / โครงการของฉัน / .idea / ไลบรารีมีไฟล์สนับสนุนหลายไฟล์ที่มีเวอร์ชันแตกต่างกัน ตอนนี้ฉันจะรู้ได้อย่างไรว่าโมดูลหรือการพึ่งพาใดกำลังใช้สิ่งนี้อยู่
Satpal Yadav

2
@SatpalYadav ฉันค้นหารุ่นที่ไม่ตรงกับรุ่นล่าสุดที่มีให้ (ฉันใช้ในแอพของฉัน) เช่นฉันใช้การสนับสนุน: การออกแบบ: 25.3.1 แต่กล่องโต้ตอบวัสดุใช้ support-v13: 25.1.1 ดังนั้นฉันได้เพิ่ม support-v13: 25.3.1 และข้อผิดพลาดจะหายไป
hardysim

1
นั่นเป็นทางออกที่ดีที่สุดสำหรับฉัน แต่ฉันจะยกเลิก libs รุ่นใหม่ได้อย่างไร
Mateusz Kaflowski

149

สำหรับทุกกรณีไม่ใช่เฉพาะสำหรับเวอร์ชันหรือไลบรารีเหล่านี้:

ให้ความสนใจกับหน้าต่างข้อมูลเล็ก ๆ ที่พูดถึงสิ่งที่ผิดพลาดมันบอกว่าตัวอย่างที่คุณต้องเปลี่ยนและเพิ่มก็กล่าวว่าตัวอย่างที่คุณมีการเปลี่ยนแปลงและเพิ่ม

ในกรณีนี้:

พบรุ่น 25.1.1, 24.0.0 ตัวอย่างเช่น com.android.support:animated-vector-drawable:25.1.1 และ com.android.support:mediarouter-v7:24.0.0

ของคุณ

com.android.support:animated-vector-drawable:25.1.1

เป็นรุ่น 25.1.1และของคุณ

com.android.support:mediarouter-v7:24.0.0

เป็นรุ่น 24.0.0ดังนั้นคุณต้องเพิ่ม mediarouter ด้วยรุ่นเดียวกัน:

com.android.support:mediarouter-v7:25.1.1

และทำอย่างนั้นกับทุกตัวอย่างที่หน้าต่างข้อมูลขนาดเล็กบอกว่าในกรณีนี้ ทุกไลบรารีที่ไม่มีเวอร์ชั่น 25.1.1

คุณต้องซิงค์ gradle หลังจากคุณแก้ไขไลบรารีที่ระบุเพื่อดูไลบรารี่และแพ็กเกจถัดไปที่คุณต้องเปลี่ยน

สิ่งสำคัญ:

หากคุณไม่ได้ใช้ไลบรารีที่ระบุอย่างน้อยหนึ่งไลบรารีและมีข้อผิดพลาดเกิดขึ้นหมายความว่าไลบรารีอื่นถูกใช้ภายในโดยไลบรารีอื่นให้รวบรวมอย่างชัดเจน

คุณยังสามารถใช้วิธีอื่นเพื่อดูความแตกต่างของเวอร์ชันของไลบรารีทั้งหมดที่คุณกำลังคอมไพล์จริง ๆ (เช่นเรียกใช้รายงานการไล่ระดับสีไล่ระดับหรือไปที่ไฟล์ไลบรารีของคุณ), objetive จริงจะรวบรวมไลบรารีทั้งหมดที่คุณใช้ด้วย รุ่นเดียวกัน


1
ขอบคุณที่ช่วยอธิบายsupport:mediarouterหน่อยได้ไหม
mrid

1
ฉันคิดว่านี่เป็นสิ่งที่คุณได้ชี้ให้เห็นว่าพวกเราส่วนใหญ่มองข้ามไป และนั่นคือ - "ใส่ใจกับหน้าต่างข้อมูลเล็ก ๆ น้อย ๆ ที่พูดถึงข้อผิดพลาด .... " ขอบคุณตอนนี้ฉันเข้าใจสิ่งที่เกิดขึ้นจริง
แอป Yo

103

วิธีที่ดีที่สุดในการแก้ปัญหาคือใช้ 'com.android.support: ... ' ทั้งหมดที่แนะนำโดย Android Studio

(ไม่สำคัญว่าจะรองรับเวอร์ชันที่คุณใช้ - 27.1.1, 28.0.0 เป็นต้น)

วางเคอร์เซอร์ไปที่บรรทัดข้อผิดพลาดเช่น

implementation 'com.android.support:appcompat-v7:28.0.0'

Android Studio จะแนะนำให้คุณทราบว่า 'com.android.support: ... ' เป็นเวอร์ชั่นที่แตกต่างจาก 'com.android.support:appcompat-v7:28.0.0'

ตัวอย่าง

ไลบรารี com.android.support ทั้งหมดต้องใช้ข้อมูลจำเพาะรุ่นที่แน่นอน (เวอร์ชั่นที่ผสมกันอาจทำให้เกิดข้อผิดพลาดขณะทำงาน) พบรุ่น 28.0.0, 27.1.0, 27.0.2 ตัวอย่าง ได้แก่ com.android.support:animated-vector-drawable:28.0.0 และ com.android.support:exifinterface:27.1.0

ดังนั้นเพิ่มcom.android.support:animated-vector-drawable:28.0.0 &com.android.support:exifinterface:28.0.0 . ตอนนี้ซิงค์ไฟล์ gradle

ทีละคนพยายามใช้ 'com.android.support: ... ' ที่แนะนำทั้งหมดจนกว่าจะไม่มีข้อผิดพลาดในบรรทัดนี้ implementation 'com.android.support:appcompat-v7:28.0.0'

ในกรณีของฉันฉันเพิ่ม

implementation 'com.android.support:appcompat-v7:28.0.0'

implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:customtabs:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'

การพึ่งพาเหล่านี้ทั้งหมดมันอาจแตกต่างกันสำหรับคุณ


ฉันเพิ่มทั้ง "การใช้งาน" com.android.support:animated-vector-drawable:28.0.0 ด้วยตนเอง "และ" การนำไปใช้งาน "com.android.support:support-media-compat:28.0.0 แต่" การนำไปใช้ " com.android.support:appcompat-v7:28.0.0 '"ยังคงถูกขีดเส้นใต้เป็นสีแดง
AAEM

@AAEM หากคุณวางเคอร์เซอร์บนบรรทัดข้อผิดพลาดมันจะแสดงการพึ่งพาที่คุณควรเพิ่มต่อไป โปรดเพิ่มการอ้างอิงทั้งหมดไปยังเวอร์ชันเดียวกันและซิงค์ไฟล์ gradle หากพบข้อผิดพลาดอีกให้ทำตามขั้นตอนอีกครั้งจนกว่าจะไม่มีข้อผิดพลาด
Adarsh ​​Vijayan P

100

เพิ่มลงในส่วนท้ายสุดของ 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.1'
        }
     }

   }
}

ตรวจสอบให้แน่ใจว่าคุณได้แทนที่ '25 .3.1 'ด้วยเวอร์ชันของห้องสมุดสนับสนุน android ที่คุณต้องการใช้สำหรับการอ้างอิงทั้งหมดไม่ควรต่ำกว่ารุ่น SDK ที่รองรับของคุณ

กว่า re gradle ซิงค์


3
นี่คือสิ่งที่ฉันต้องการการอ้างอิงอย่างใดอย่างหนึ่งของฉันถูกดึงใน 27.0.1 อย่างใดแม้ว่าฉันจะระบุรุ่นที่น้อยกว่าที่ระดับบนสุด จากความอยากรู้ทำไมคุณไม่รวม "multidex"
เรย์

4
สิ่งนี้ช่วยชีวิตฉันไว้ แต่การพัฒนาแอนดรอยด์นี้เริ่มมีการแยกส่วนมากขึ้นทุก ๆ ปีที่ผ่านมา ผู้คนจำเป็นต้องตรวจสอบทุกห้องสมุดการสนับสนุนอย่างสมบูรณ์แบบก่อนที่จะเปิดตัว เราไม่มีเวลาเหลือเฟือที่จะผ่านการสนับสนุนใหม่แต่ละครั้งเพราะเราต้องการมุ่งเน้นที่การสร้างผลิตภัณฑ์ของเรามากกว่าที่จะทำสิ่งเหล่านี้ทั้งหมด มันน่าผิดหวังอยู่เสมอ
larrytech

1
@ThinkTwiceCodeOnce คุณสามารถไปที่นี่เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ groovy และปลั๊กอิน inteliji ของมัน: jetbrains.com/help/idea/getting-started-with-groovy.html
ezzou

1
คุณเป็นคนช่วยชีวิต สิ่งนี้ควรได้รับการสนับสนุนหลายครั้ง!
imin

1
นี่ควรเป็นทางออก ... โหวตขึ้น
Ast

54

ฉันมีปัญหาเดียวกันแน่นอนหลังจากอัปเดตเป็น Android Studio 2.3

การเพิ่มบรรทัดนี้เป็นการอ้างอิงช่วยแก้ปัญหาของฉันได้:

compile 'com.android.support:customtabs:25.2.0'

2
ฉันมีปัญหาเดียวกันแน่นอนหลังจากอัปเดตเป็น Android Studio 2.3
Plugie

1
สำหรับทุกคนที่ใช้ RenderScript ฉันตั้งค่าrenderscriptSupportModeEnabled falseนี้เป็นเท็จ และเพิ่มการรวบรวม'com.android.support:customtabs:25.2.0'และข้อผิดพลาดก็หายไป
กฏหมาย Gimenez

1
@LawGimenez และวิธีการที่เราควรใช้ renderscript ถ้าเราเพียงแค่ปิดการใช้งาน?
dor506

3
ดูเหมือนว่าปัญหาของฉันเป็นเพราะ renderscript ด้วย แต่ถ้าฉันต้องการ renderscript สำหรับสิ่งอื่นไม่ใช่สำหรับ customtabs?
HendraWD

46

A) เรียกใช้gradle dependenciesหรือ./gradlew dependencies

B) ดูที่แผนผังของคุณและดูว่าการอ้างอิงใดของคุณที่ระบุเวอร์ชันไลบรารีการสนับสนุนอื่นสำหรับการพึ่งพาที่คุณไม่ได้ควบคุม

ฉันไม่ทราบว่าคำเตือนนี้จะแสดงหากการพึ่งพานั้นไม่ได้ใช้โดยตรงโดยรหัสของคุณเอง ในกรณีของฉัน, Facebook ระบุ libs สนับสนุนบางอย่างที่ฉันไม่ได้ใช้คุณสามารถดูด้านล่างส่วนใหญ่ของการอ้างอิงเหล่านั้นถูกแทนที่โดยสเปคของตัวเอง 25.2.0, แสดงโดย-> XXX (*)สัญลักษณ์ การดูการ์ดและแท็บที่กำหนดเองนั้นไม่ได้ถูกแทนที่โดยใครดังนั้นฉันจึงต้องขอ 25.2.0 สำหรับคนเหล่านั้นด้วยตนเองแม้ว่าฉันจะไม่ได้ใช้ก็ตาม

+--- com.facebook.android:facebook-android-sdk:4.17.0
|    +--- com.android.support:support-v4:25.0.0 -> 25.2.0 (*)
|    +--- com.android.support:appcompat-v7:25.0.0 -> 25.2.0 (*)
|    +--- com.android.support:cardview-v7:25.0.0
|    |    \--- com.android.support:support-annotations:25.0.0 -> 25.2.0
|    +--- com.android.support:customtabs:25.0.0
|    |    +--- com.android.support:support-compat:25.0.0 -> 25.2.0 (*)
|    |    \--- com.android.support:support-annotations:25.0.0 -> 25.2.0
|    \--- com.parse.bolts:bolts-android:1.4.0 (*)

หาก gradle ได้เตือนคุณและให้ตัวอย่างแก่คุณ ...

ตัวอย่างเช่น com.android.support:animated-vector-drawable:25.1.1 และ com.android.support:mediarouter-v7:24.0.0

... มันจะง่ายกว่านี้ถ้าคุณทำ grep ไฮไลต์สำหรับเวอร์ชั่นที่ต่ำกว่าเนื่องจากgradle dependenciesเป็น verbose:

./gradlew dependencies | grep --color -E 'com.android.support:mediarouter-v7|$'

1
จากคำอธิบายของคุณฉันเข้าใจว่า XXX -> YYY (*) หมายความว่า XXX ถูกแทนที่โดย YYY นั่นเป็นเรื่องดีที่รู้
Mercury

แท้จริงคำตอบที่ถูกต้องเท่านั้น
stef

32

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

dependencies {

    ext {
        support_library_version = '25.2.0'
        google_play_services_version = '10.2.0'
    }

    //#####################################################################
    //          Support Library
    //#####################################################################
    compile "com.android.support:appcompat-v7:${support_library_version}"
    compile "com.android.support:palette-v7:${support_library_version}"
    compile "com.android.support:design:${support_library_version}"

    //#####################################################################
    //          Google Play Services
    //#####################################################################
    compile "com.google.android.gms:play-services-auth:${google_play_services_version}"
    compile "com.google.android.gms:play-services-ads:${google_play_services_version}"
    compile "com.google.android.gms:play-services-analytics:${google_play_services_version}"

    //#####################################################################
    //          Firebase
    //#####################################################################
    compile "com.google.firebase:firebase-core:${google_play_services_version}"
    compile "com.google.firebase:firebase-auth:${google_play_services_version}"
    compile "com.google.firebase:firebase-messaging:${google_play_services_version}"

ข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ Google แนะนำให้คุณจัดการกับเวอร์ชันนี้สามารถพบได้ในบทความนี้: https://developer.android.com/studio/build/index.html#top-level


ขอบคุณที่รัก Daniel F ฉันคิดว่านี่เป็นวิธีที่ดีที่สุดในการหลีกเลี่ยงปัญหาการมิกซ์เวอร์ชั่น
Hovanes Mosoyan

2
เพียงคนเดียวที่ทราบโปรด: เป็นข้อเสนอแนะในการเชื่อมโยงดังกล่าวข้างต้นเราควรกำหนดตัวแปรประเภทนี้ในระดับบนสุด GRADLE ขอบคุณ FILE อีกครั้ง)
Hovanes Mosoyan

25

เพียงเพิ่มสิ่งนี้:

compile 'com.android.support:mediarouter-v7:25.2.0'

Updated สำหรับ SDK รุ่นใหม่

compile 'com.android.support:mediarouter-v7:28.0.0-alpha3'

มันไม่ได้แก้ปัญหาที่ห้องสมุดเก่ามี SDK เก่า
CoolMind

19

หากข้อผิดพลาดเดียวกันเปิดอยู่ appcompat

implementation 'com.android.support:appcompat-v7:27.0.1'

จากนั้นเพิ่มการdesignแก้ไขมัน

implementation 'com.android.support:appcompat-v7:27.0.1'
implementation 'com.android.support:design:27.0.1'

สำหรับฉันเพิ่ม

implementation 'de.mrmaffen:vlc-android-sdk:2.0.6'

รวมappcompat-v7:23.1.1อยู่ใน

.idea / ห้องสมุด

โดยไม่ต้องvlc, appcompatอยู่คนเดียวก็พอ


ขอบคุณมากมันใช้งานได้ แต่บทบาทของ 'com.android.support:design:27.0.1' คืออะไร
Wessam El Mahdy

19

ดังที่คุณได้เห็นคำตอบและความคิดเห็นทั้งหมดข้างต้นแล้ว แต่คำตอบนี้คือการล้างสิ่งที่นักพัฒนาใหม่อาจไม่ได้รับอย่างง่ายดาย

./gradlew -q แอพอ้างอิง: การพึ่งพา - คอมไพล์การกำหนดค่า

บรรทัดข้างต้นจะช่วยชีวิตคุณได้อย่างไม่ต้องสงสัย แต่จะได้คะแนนที่แน่นอนจากผลลัพธ์ของบรรทัดที่กล่าวมา

เมื่อคุณได้รับแผนภูมิการพึ่งพาทั้งหมดหรือรายการจากคำสั่งข้างต้นแล้วคุณต้องค้นหาหมายเลขเวอร์ชันที่ขัดแย้งกันซึ่งคุณได้รับในรหัสของคุณ โปรดดูภาพด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่

ในภาพด้านบนคุณจะเห็นว่า23.4.0กำลังสร้างปัญหา แต่สิ่งนี้เราไม่พบในไฟล์ gradle ของเรา ดังนั้นตอนนี้หมายเลขรุ่น (23.4.0) จะช่วยเรา เมื่อเรามีหมายเลขนี้แล้วเราจะพบหมายเลขนี้ในผลลัพธ์ของคำสั่งข้างต้นและนำเข้าโดยตรงที่พึ่งพาโดยตรงในไฟล์ gradle ของเรา โปรดดูภาพด้านล่างเพื่อรับมุมมองที่ชัดเจน

คุณสามารถเห็นได้อย่างชัดเจนว่าcom.android.support:cardview-v7:23.4.0และcom.android.support:customtabs:23.4.0กำลังใช้เวอร์ชันที่กำลังสร้างปัญหา ตอนนี้เพียงแค่คัดลอกบรรทัดเหล่านั้นจากรายการการพึ่งพาและใช้อย่างชัดเจนในไฟล์ gradle ของเรา แต่มีลิงค์เวอร์ชั่นที่อัปเดต

การใช้งาน "com.android.support:cardview-v7:26.1.0" การใช้งาน "com.android.support:customtabs:26.1.0"


1
ขอบคุณ! ด้วย android studio รุ่นใหม่ควรเปลี่ยนไปใช้งานแทนที่จะรวบรวม
Avi Parshan

ใช่คุณพูดถูก @AviParshan เราสามารถใช้คอมไพล์หรือ api การพึ่งพาที่ปรากฏในการกำหนดค่า api จะถูกเปิดเผยต่อผู้บริโภคของไลบรารีและจะปรากฏในคอมไพล์ classpath ของผู้บริโภค การพึ่งพาที่พบในการกำหนดค่าการใช้งานจะไม่ได้สัมผัสกับผู้บริโภคดังนั้นจึงไม่รั่วไหลใน classpath รวบรวมของผู้บริโภค
anoopbryan2

ใช้. /gradlew -q แอพอ้างอิง: การพึ่งพา - การนำการกำหนดค่ามาใช้
สุมิตร

15

อีกวิธีหนึ่งในการแก้ไขข้อขัดแย้งคือเพียงบังคับรุ่นที่ถูกต้องสำหรับการอ้างอิงทั้งหมดเช่นนี้:

dependencies {
            configurations.all {
                resolutionStrategy.eachDependency { DependencyResolveDetails details ->
                    if (details.requested.group == 'com.android.support' && details.requested.name == 'support-v4') {
                        details.useVersion "27.0.2"
                    }
                }
    ...
    }

https://docs.gradle.org/current/userguide/customizing_dependency_resolution_behavior.html


กฎการแก้ไขการพึ่งพานั้นยากที่จะรักษา พวกเขาจะต้องได้รับการปรับปรุงด้วยตนเองสำหรับหมายเลขเวอร์ชันและการเปลี่ยนแปลงใด ๆ ในไลบรารีการสนับสนุนที่นำไปใช้งาน ตัวอย่างเช่น Android Studio ไฮไลต์รุ่น lib ที่ใหม่กว่าพร้อมใช้งาน แต่ไม่ตีความกฎเหล่านี้
Manuel

12

ใช้ support-v13 แทน support-v4

compile 'com.android.support:support-v13:25.2.0'

ฉันกำลังมีปัญหากับเรื่องนี้: คอมไพล์ 'com.android.support:recyclerview-v7:25.2.0'
Crime_Master_GoGo

ข้อผิดพลาดแบบเดียวกันทุก
ประการ

@Googli โปรดเขียนcompileSdkVersion , buildToolsVersionและการอ้างอิงที่ฉันใช้ ไม่มีปัญหาcompile 'com.android.support:appcompat-v7:25.2.0' compile 'com.android.support:design:25.2.0' compile 'com.android.support:support-v13:25.2.0' compile 'com.android.support:recyclerview-v7:25.2.0'
เมห์เม็ตHanoğlu

12

เพิ่มสิ่งเหล่านี้ในการพึ่งพาระดับแอป

implementation 'com.android.support:asynclayoutinflater:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'

9

ปัญหาของฉันคล้ายกับของคุณ ที่นี่มีข้อผิดพลาด!

compile 'com.android.support:appcompat-v7:25.3.0'

ไลบรารี com.android.support ทั้งหมดต้องใช้ข้อมูลจำเพาะรุ่นที่แน่นอน (เวอร์ชั่นที่ผสมกันอาจทำให้เกิดข้อผิดพลาดขณะทำงาน) พบรุ่น 25.3.0, 24.0.0 ตัวอย่าง ได้แก่ 'com.android.support:animated-vector-drawable:25.3.0' และ 'com.android.support:mediarouter-v7:24.0.0'

การดูตัวอย่างนี้รวมถึง 'com.android.support:animated-vector-drawable:25.3.0' และ 'com.android.support:mediarouter-v7:24.0.0'

เพียงเพิ่มรหัสเหล่านี้ในการอ้างอิงตรวจสอบให้แน่ใจว่ารุ่นเดียวกัน

compile 'com.android.support:animated-vector-drawable:25.3.0'
compile 'com.android.support:mediarouter-v7:25.3.0'

9

ผมได้รับข้อผิดพลาดเดียวกันหลังจากที่เพิ่มกับคอมไพล์compile 'com.google.android.gms:play-services:10.2.4''com.android.support:appcompat-v7:25.3.1'

การเพิ่มanimated-vector-drawableและmediarouter libsแก้ไขปัญหา

compile 'com.google.android.gms:play-services:10.2.4'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:animated-vector-drawable:25.3.1'
compile 'com.android.support:mediarouter-v7:25.3.1'

9

ฉันมีสิ่งนี้:

dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:27.1.1'
   implementation 'com.android.support:design:27.1.1'
   implementation 'com.android.support:support-v4:27.1.1'
   implementation 'com.google.firebase:firebase-auth:12.0.1'
   implementation 'com.google.firebase:firebase-firestore:12.0.1'
   implementation 'com.google.firebase:firebase-messaging:12.0.1'
   implementation 'com.google.android.gms:play-services-auth:12.0.1'
   implementation'com.facebook.android:facebook-login:[4,5)'
   implementation 'com.twitter.sdk.android:twitter:3.1.1'
   implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
   implementation 'org.jetbrains:annotations-java5:15.0'
   implementation project(':vehiclesapi')
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.android.support.test:runner:1.0.1'
   androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

และได้รับข้อผิดพลาดนี้: ป้อนคำอธิบายรูปภาพที่นี่

การแก้ปัญหานั้นง่าย - การพึ่งพาหลักนั้นถูกต้องทั้งหมดดังนั้นการทิ้งไว้ - การพึ่งพาของบุคคลที่สามใด ๆ ลบทีละคนจนกว่าจะพบผู้กระทำผิดและกลายเป็น facebook! ใช้รุ่น 27.0.2 ของห้องสมุดสนับสนุน android ฉันพยายามเพิ่มรุ่น cardview 27.1.1 แต่นั่นไม่ได้ผลเลยวิธีแก้ปัญหาก็ยังง่ายพอ

dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:27.1.1'
   implementation 'com.android.support:design:27.1.1'
   implementation 'com.android.support:support-v4:27.1.1'
   implementation 'com.google.firebase:firebase-auth:12.0.1'
   implementation 'com.google.firebase:firebase-firestore:12.0.1'
   implementation 'com.google.firebase:firebase-messaging:12.0.1'
   implementation 'com.google.android.gms:play-services-auth:12.0.1'
   implementation('com.facebook.android:facebook-login:[4,5)'){
       // contains com.android.support:v7:27.0.2, included required com.android.support.*:27.1.1 modules
    exclude group: 'com.android.support'
   }
   implementation 'com.android.support:cardview-v7:27.1.1' // to replace facebook sdk's cardview-v7:27.0.2.
   implementation 'com.twitter.sdk.android:twitter:3.1.1'
   implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
   implementation 'org.jetbrains:annotations-java5:15.0'
   implementation project(':vehiclesapi')
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.android.support.test:runner:1.0.1'
   androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

9

ฉันประสบปัญหานี้หลังจากอัปเกรดเป็น android studio 3.4 และ sdk version เป็น 28.0.0 การใช้การพึ่งพาด้านล่างช่วยแก้ปัญหาให้ฉันได้

    implementation 'com.android.support:exifinterface:28.0.0'

8

ฉันใช้สองสิ่งนี้เพื่อแก้ปัญหาของฉันหลังจากอัปเกรดเป็น android studio 2.3

compile 'com.android.support:animated-vector-drawable:25.0.0'
compile 'com.android.support:mediarouter-v7:25.0.0'

8

ฉันมีปัญหาเดียวกันก่อนและฉันได้รับการแก้ไข

ฉันเพิ่งเพิ่มไลบรารีที่มีเวอร์ชันอื่น แต่ด้วยเวอร์ชันเดียวกันของฉัน support:appcompatแต่มีรุ่นเดียวกันของฉัน

สำหรับข้อผิดพลาดของคุณเช่น:

ไลบรารี com.android.support ทั้งหมดต้องใช้ข้อมูลจำเพาะรุ่นที่แน่นอน (เวอร์ชั่นที่ผสมกันอาจทำให้เกิดข้อผิดพลาดขณะทำงาน) พบรุ่น 25.1.1, 24.0.0 ตัวอย่างเช่น com.android.support:animated-vector-drawable:25.1.1 และ com.android.support:mediarouter-v7:24.0.0

* วิธีแก้ไขคือการรวบรวมเวอร์ชันของไลบรารี่เหล่านี้:

compile 'com.android.support:mediarouter-v7:25.1.1'

หากห้องสมุดอื่นมีปัญหาเดียวกันและมีรุ่นอื่นเพียงรวบรวมกับของคุณ support:appcompatรุ่น

นี่เป็นการแก้ไขปัญหาของฉันและฉันหวังว่าจะช่วยคุณแก้ปัญหาได้

ด้วยความปรารถนาดี :)


8

หลังจากค้นหาและรวมคำตอบแล้วคำถามนี้รุ่น 2018และใช้ได้กับฉัน:

1) บนแท็บการนำทางเปลี่ยนเป็นมุมมองโครงการ

2) ไปที่[YourProjectName] /. idea / ไลบรารี /

3) ลบไฟล์ทั้งหมดที่ขึ้นต้นด้วย Gradle__com_android_support_ [libraryName]

เช่นGradle__com_android_support_animated_vector_drawable_26_0_0.xml

4) ในไฟล์ gradle ของคุณกำหนดตัวแปรและใช้เพื่อแทนที่หมายเลขรุ่นเช่น$ {variableName}

ตัวแปร Def:

ext {
    support_library_version = '28.0.0' //use the version of choice
}

ใช้ตัวแปร:

implementation "com.android.support:cardview-v7:${support_library_version}"

ตัวอย่าง gradle:

dependencies {
    ext {
        support_library_version = '28.0.0' //use the version of choice
    }

    implementation fileTree(include: ['*.jar'], dir: 'libs')

    implementation "com.android.support:animated-vector-drawable:${support_library_version}"
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:customtabs:${support_library_version}"
    implementation "com.android.support:cardview-v7:${support_library_version}"
    implementation "com.android.support:support-compat:${support_library_version}"
    implementation "com.android.support:support-v4:${support_library_version}"
    implementation "com.android.support:support-core-utils:${support_library_version}"
    implementation "com.android.support:support-core-ui:${support_library_version}"
    implementation "com.android.support:support-fragment:${support_library_version}"
    implementation "com.android.support:support-media-compat:${support_library_version}"
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:recyclerview-v7:${support_library_version}"
    implementation "com.android.support:design:${support_library_version}"

}

1
คำตอบนี้ต้องการคำอธิบายเพิ่มเติม ผู้อ่านอาจเชื่อว่าพวกเขาควรคัดลอกไฟล์ gradle ทั้งหมดของคุณลงในโครงการของพวกเขา คุณควรอธิบายว่าเพราะเหตุใดคุณจึงเพิ่มส่วนขยายและสาเหตุที่คุณตั้งค่า libs สนับสนุนบางอย่างให้กับรุ่น gplaysvcs ส่วนอื่น ๆ เป็นรุ่น supportlib และบางส่วนไม่เปลี่ยนแปลง
jungledev

8

ง่ายมากกับเวอร์ชั่นใหม่ของ android studio 3.x

เพียงคัดลอกเวอร์ชันที่น้อยกว่าเวอร์ชันปัจจุบันและเพิ่มเวอร์ชันที่มีหมายเลขเวอร์ชันเดียวกันกับเวอร์ชันปัจจุบันอย่างชัดเจน

ตัวอย่าง

พบรุ่น 27.1.1, 27.1.0 ตัวอย่างเช่น com.android.support:animated-vector-drawable:27.1.1 และ com.android.support:exifinterface:27.1.0

เพียงแค่คัดลอกเวอร์ชันcom.android.support:exifinterface:27.1.0และเปลี่ยนเป็นเพื่อcom.android.support:exifinterface:27.1.1ให้เป็นเวอร์ชั่นปัจจุบันที่คุณใช้และเพิ่มลงในการอ้างอิงแบบไล่ระดับสีของคุณดังต่อไปนี้

implementation 'com.android.support:exifinterface:27.1.1'

หมายเหตุ: เมื่อคุณทำเสร็จแล้วอย่าลืมคลิกSyncที่ด้านบนสุดของเครื่องมือแก้ไข


7

ในปี 2018 ปรับปรุงสำหรับข้อผิดพลาดนี้เพิ่มการใช้งานจากโครงสร้างโครงการ

implementation 'com.android.support:support-v13:28.0.0'

ในโหมดโปรเจ็กต์ -> ไลบรารีภายนอกมีคุณสามารถค้นหาปัญหาของคุณในกรณีของฉันฉันใช้เวอร์ชั่น 28 และcom.android.support:support-media-compat-26.0.0ไลบรารี่ภายนอกที่ฉันพบ และนี่คือข้อผิดพลาด

หลังจากการติดตั้งsupport v13และใช้งานได้


ขีดเส้นใต้สีแดงหายไปพร้อมกับการใช้งานนี้
Truong Hieu

6

คุณได้กำหนดพึ่งพาอื่น ๆ ในการรวบรวมกับรุ่นแทน24.0.0 กรุณาตั้งค่าทุกการอ้างอิงของรุ่นเดียวกับ25.1.125.1.1


ฉันได้อัปเดตคำตอบของฉันแล้วทุกรุ่นที่รองรับมีเวอร์ชันเดียวกัน 25.1.1
อัปเกรด

6

ฉันต้องเพิ่มบรรทัดต่อไปนี้ในระดับเสียงเพื่อลบข้อผิดพลาด

compile 'com.android.support:animated-vector-drawable:25.2.0'
compile 'com.android.support:preference-v7:25.2.0'
compile 'com.android.support:customtabs:25.2.0'
compile 'com.android.support:cardview-v7:25.2.0'

6

ฉันทำงาน. / gradlew - ทั้งหมดและตรวจสอบการอ้างอิงที่เป็นเวอร์ชันที่แตกต่างจากเวอร์ชันเป้าหมาย (25.3.1) คุณจะได้รับสิ่งนี้:

app:prepareComAndroidSupportAnimatedVectorDrawable2531Library - Prepare com.android.support:animated-vector-drawable:25.3.1
app:prepareComAndroidSupportAppcompatV72531Library - Prepare com.android.support:appcompat-v7:25.3.1
app:prepareComAndroidSupportCardviewV72531Library - Prepare com.android.support:cardview-v7:25.3.1
app:prepareComAndroidSupportCustomtabs2531Library - Prepare com.android.support:customtabs:25.3.1
app:prepareComAndroidSupportDesign2531Library - Prepare com.android.support:design:25.3.1
app:prepareComAndroidSupportMediarouterV72531Library - Prepare com.android.support:mediarouter-v7:25.3.1
app:prepareComAndroidSupportPaletteV72531Library - Prepare com.android.support:palette-v7:25.3.1
app:prepareComAndroidSupportRecyclerviewV72531Library - Prepare com.android.support:recyclerview-v7:25.3.1
app:prepareComAndroidSupportSupportCompat2531Library - Prepare com.android.support:support-compat:25.3.1
app:prepareComAndroidSupportSupportCoreUi2531Library - Prepare com.android.support:support-core-ui:25.3.1
app:prepareComAndroidSupportSupportCoreUtils2531Library - Prepare com.android.support:support-core-utils:25.3.1
app:prepareComAndroidSupportSupportFragment2531Library - Prepare com.android.support:support-fragment:25.3.1
app:prepareComAndroidSupportSupportMediaCompat2531Library - Prepare com.android.support:support-media-compat:25.3.1
app:prepareComAndroidSupportSupportV42531Library - Prepare com.android.support:support-v4:25.3.1
app:prepareComAndroidSupportSupportVectorDrawable2531Library - Prepare com.android.support:support-vector-drawable:25.3.1
app:prepareComAndroidSupportTransition2531Library - Prepare com.android.support:transition:25.3.1
app:prepareComAndroidVolleyVolley100Library - Prepare com.android.volley:volley:1.0.0
app:prepareComCrashlyticsSdkAndroidAnswers1312Library - Prepare com.crashlytics.sdk.android:answers:1.3.12
app:prepareComCrashlyticsSdkAndroidBeta124Library - Prepare com.crashlytics.sdk.android:beta:1.2.4
app:prepareComCrashlyticsSdkAndroidCrashlytics267Library - Prepare com.crashlytics.sdk.android:crashlytics:2.6.7
app:prepareComCrashlyticsSdkAndroidCrashlyticsCore2316Library - Prepare com.crashlytics.sdk.android:crashlytics-core:2.3.16
app:prepareComFacebookAndroidFacebookAndroidSdk4161Library - Prepare com.facebook.android:facebook-android-sdk:4.16.1
app:prepareComGoogleAndroidGmsPlayServicesAnalytics1026Library - Prepare com.google.android.gms:play-services-analytics:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAnalyticsImpl1026Library - Prepare com.google.android.gms:play-services-analytics-impl:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAuth1026Library - Prepare com.google.android.gms:play-services-auth:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAuthBase1026Library - Prepare com.google.android.gms:play-services-auth-base:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesBase1026Library - Prepare com.google.android.gms:play-services-base:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesBasement1026Library - Prepare com.google.android.gms:play-services-basement:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesCast1026Library - Prepare com.google.android.gms:play-services-cast:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesLocation1026Library - Prepare com.google.android.gms:play-services-location:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesMaps1026Library - Prepare com.google.android.gms:play-services-maps:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesTagmanagerV4Impl1026Library - Prepare com.google.android.gms:play-services-tagmanager-v4-impl:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesTasks1026Library - Prepare com.google.android.gms:play-services-tasks:10.2.6
app:prepareComGoogleFirebaseFirebaseAnalytics1026Library - Prepare com.google.firebase:firebase-analytics:10.2.6
app:prepareComGoogleFirebaseFirebaseAnalyticsImpl1026Library - Prepare com.google.firebase:firebase-analytics-impl:10.2.6
app:prepareComGoogleFirebaseFirebaseAppindexing1024Library - Prepare com.google.firebase:firebase-appindexing:10.2.4
app:prepareComGoogleFirebaseFirebaseCommon1026Library - Prepare com.google.firebase:firebase-common:10.2.6
app:prepareComGoogleFirebaseFirebaseCore1026Library - Prepare com.google.firebase:firebase-core:10.2.6
app:prepareComGoogleFirebaseFirebaseIid1026Library - Prepare com.google.firebase:firebase-iid:10.2.6
app:prepareComGoogleFirebaseFirebaseMessaging1026Library - Prepare com.google.firebase:firebase-messaging:10.2.6
app:prepareComMindorksPlaceholderview027Library - Prepare com.mindorks:placeholderview:0.2.7
app:prepareDebugAndroidTestDependencies
app:prepareDebugDependencies
app:prepareDebugUnitTestDependencies
app:prepareInfoHoang8fAndroidSegmented105Library - Prepare info.hoang8f:android-segmented:1.0.5
app:prepareIoFabricSdkAndroidFabric1316Library - Prepare io.fabric.sdk.android:fabric:1.3.16
app:prepareNoNordicsemiAndroidLog211Library - Prepare no.nordicsemi.android:log:2.1.1
app:prepareNoNordicsemiAndroidSupportV18Scanner100Library - Prepare no.nordicsemi.android.support.v18:scanner:1.0.0

ในกรณีนี้ฉันกำหนดเป้าหมาย 25.3.1 และมีการอ้างอิงบางส่วนที่กำหนดเป้าหมายรุ่นต่าง ๆ เมื่อฉันเรียกใช้คำสั่งนี้ เคล็ดลับคือการระบุการอ้างอิงในรายการนี้ที่มีการกำหนดเป้าหมายเวอร์ชันก่อนหน้าและการแทนที่นั้นโดยการนำเข้าเวอร์ชันที่อ้างอิงล่าสุดใน Gradle


6

ฉันมีปัญหาเดียวกัน แต่ฉันแก้ไขได้โดยเพิ่มสามบรรทัดเหล่านั้น

implementation 'com.android.support:design:27.1.1'
implementation "com.android.support:customtabs:27.1.1"
implementation 'com.android.support:mediarouter-v7:27.1.1'

ตอนนี้ทุกสิ่งทำงานได้อย่างสมบูรณ์แบบ


6

นี่คือการไหลของฉันเพื่อแก้ไขคำเตือนนี้

build.gradle

android {
    compileSdkVersion ... // must same version (ex: 26)
    ...
}

dependencies {
    ...
    compile 'any com.android.support... library'  // must same version (ex: 26.0.1)
    compile 'any com.android.support... library'  // must same version (ex: 26.0.1)

    ...
    compile ('a library B which don't use 'com.android.support...' OR use SAME version of 'com.android.support'){
         // do nothing 
    }

    ...
    compile ('a library C which use DIFFERENT 'com.android.support...' (ex:27.0.1) { 
        // By default, if use don't do anything here your app will choose the higher com.android.support... for whole project (in this case it is 27.0.1)

        // If you want to use 26.0.1 use
        exclude group: 'com.android.support', module: '...' (ex module: 'appcompat-v7') 
        exclude group: 'com.android.support', module: 'another module'
        ...

        // If you want to use 27.0.1 do 
        Upgrade `compileSdkVersion` and all 'com.android.support' to 27.0.1.
        (It may be a good solution because the best practice is always use latest `compileSdkVersion`.  
        However, use 26 or 27 is base on you for example higher library may have bug)
    }
}

วิธีดู / ตรวจสอบdependenciesห้องสมุดทั้งหมดในแอปของคุณ
เปิดเทอร์มินัลแล้วเรียกใช้./gradlew app:dependencies

วิธีดูไลบรารี่ที่dependenciesเฉพาะเจาะจงในแอพของคุณทำตามบทช่วยสอนที่นี่: - วิธีแยกการอ้างอิงของการพึ่งพาเฉพาะใน Gradle

หวังว่ามันจะช่วย


5

เปิดไลบรารี่ภายนอกของโปรเจคคุณจะเห็นว่าไลบรารี่บางตัวยังคงใช้เวอร์ชั่นก่อนหน้าแม้ว่าคุณจะไม่ได้พูดถึงไลบรารี่เหล่านั้นดังนั้นคำแนะนำของฉันก็คือให้ใช้ไลบรารี่รุ่นใดอันหนึ่งเพื่อแก้ปัญหาของคุณ


5

ฉันเพิ่งอัปเดตพื้นที่เก็บข้อมูลสนับสนุน Android เป็น (แก้ไข: 44.0.0); เครื่องมือ Android SDK และ Emulator เป็นเวอร์ชั่นล่าสุด 25.3.1 จาก sdk manager> เครื่องมือ SDK และแก้ไขปัญหาของฉันได้

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