Tất cả các thư viện com.android.support phải sử dụng cùng một đặc điểm kỹ thuật phiên bản


788

Sau khi cập nhật lên android studio 2.3 tôi nhận được thông báo lỗi này. Tôi biết đó chỉ là một gợi ý vì ứng dụng chạy bình thường nhưng nó thực sự lạ.

Tất cả các thư viện com.android.support phải sử dụng cùng một đặc điểm kỹ thuật phiên bản chính xác (các phiên bản trộn có thể dẫn đến sự cố thời gian chạy). Tìm thấy phiên bản 25.1.1, 24.0.0. Ví dụ bao gồm com.android.support:animated-vector-drawable:25.1.1 và com.android.support:mediarouter-v7:24.0.0

nhập mô tả hình ảnh ở đây

học sinh lớp tôi:

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

thêm phần này vào dự án con của bạn ProjectBuild.Gradle {project.configurations.all {giải quyếtStrargety.eachDependency {chi tiết -> if (chi tiết.requested.group == 'com.android.support' &&! chi tiết.requested.name.contains ('multide ')) {chi tiết.useVersion "26. +"}}}}
Sunil Chaudhary

Câu trả lời:


906

Bạn có thể giải quyết điều này bằng một trong những giải pháp sau:

Cập nhật:

Kể từ Android studio 3.0, nó trở nên dễ dàng hơn nhiều vì giờ đây nó cho thấy một gợi ý hữu ích hơn, vì vậy chúng ta chỉ cần làm theo gợi ý này.
ví dụ: 1]

Tất cả các thư viện com.android.support phải sử dụng cùng một đặc điểm kỹ thuật phiên bản chính xác (các phiên bản trộn có thể dẫn đến sự cố thời gian chạy). Tìm thấy phiên bản 27.0.2, 26.1.0. Ví dụ bao gồm com.android.support:animated-vector-drawable:27.0.2 và com.android.support:customtabs:26.1.0

có một số kết hợp thư viện, hoặc công cụ và thư viện không tương thích hoặc có thể dẫn đến lỗi. Một sự không tương thích như vậy là biên dịch với một phiên bản của các thư viện hỗ trợ Android không phải là phiên bản mới nhất (hay cụ thể là phiên bản thấp hơn targetSdkVersion của bạn.)

Giải pháp:
Thêm rõ ràng thư viện với phiên bản cũ nhưng có số phiên bản mới.
trong trường hợp của tôi com.android.support:customtabs:26.1.0vì vậy tôi cần thêm:

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

tức là: Lấy thư viện từ mục thứ hai và triển khai nó với số phiên bản từ mục thứ nhất.

Lưu ý: đừng quên nhấn đồng bộ hóa ngay bây giờ để gradle có thể xây dựng lại biểu đồ phụ thuộc và xem liệu có thêm xung đột nào không.

Giải thích:
bạn có thể bị nhầm lẫn bởi thông báo lỗi vì không sử dụng customtabsvì vậy làm thế nào tôi có xung đột !!
tốt .. bạn đã không sử dụng nó trực tiếp nhưng một trong những thư viện của bạn sử dụng phiên bản cũ của customtabsnội bộ, vì vậy bạn cần yêu cầu trực tiếp.

nếu bạn tò mò muốn biết thư viện nào chịu trách nhiệm cho phiên bản cũ và có thể yêu cầu tác giả cập nhật lib của mình, hãy chạy báo cáo phụ thuộc Gradle, xem câu trả lời cũ để biết cách.

Lưu ý điều này


Câu trả lời cũ:

lấy cảm hứng từ câu trả lời của CommonsWare :

Chạy một báo cáo phụ thuộc Gradle để xem toàn bộ cây phụ thuộc của bạn là gì.

Từ đó, bạn sẽ thấy một trong những thư viện của bạn đang yêu cầu phiên bản khác của thư viện Hỗ trợ Android. Đối với bất cứ điều gì nó yêu cầu, bạn có thể yêu cầu trực tiếp với phiên bản 25.2.0 hoặc sử dụng các phương pháp giải quyết xung đột khác của Gradle để có được các phiên bản tương tự.


Cập nhật:

Kể từ phiên bản plugin gradle: 3.0 compileđã được thay thế bằng implementationhoặc apixem câu trả lời này cho sự khác biệt.

do đó sử dụng thay thế:

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

hoặc cho cửa sổ cmd:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

và tìm kiếm phiên bản xung đột.

Đối với tôi, lỗi biến mất sau khi xóa com.google.android.gms:play-services:10.2.0

Và chỉ bao gồm com.google.android.gms:play-services-location:10.2.0com.google.android.gms:play-services-maps:10.2.0vì chúng là hai dịch vụ chơi duy nhất mà tôi sử dụng.

Tôi nghĩ rằng sự gms:play-servicesphụ thuộc vào một số thành phần cũ của thư viện hỗ trợ, vì vậy chúng ta cần thêm chúng một cách rõ ràng.


cho AS 3.0 cũ hơn.

Chạy:

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

Thí dụ:

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

Nếu ai đó biết một cách tốt hơn trong plugin lớp mới, vui lòng cho tôi biết.


3
com.google.android.gms:play-services:10.2.0hỗ trợ SDK 14 trở lên, nếu bạn muốn sử dụng bên dưới SDK 14, bạn cần sử dụng phiên bản 10.0.1như được đề cập trong stackoverflow.com/a/42315590/6248491
Sneh Pandya

2
@humazed noob câu hỏi, tôi chạy lệnh trong Android Studio ở đâu?
Haikal Nashuha

1
trong thiết bị đầu cuối, nhưng trước tiên, hãy thử dùng thử dịch vụ chơi
tẻ nhạt

1
Tôi có phải là người duy nhất nghĩ rằng đây là sự điên rồ không? Tôi chỉ muốn admob và facebook, và họ từ chối làm việc cùng nhau ....
Jay

3
Có thể hữu ích khi chỉ ra rằng examples includevăn bản trong thông báo lỗi hiển thị các ví dụ thực tế từ dự án của riêng bạn, chứ không phải các ví dụ chung mơ hồ về loại vấn đề. Lấy thư viện từ mục thứ hai và triển khai nó với số phiên bản từ mục thứ nhất.
Benjamin Kershner

203
  1. Chuyển đến project/.idea/librariesthư mục trên hệ thống tệp của bạn và xem thư viện nào khác nhau.
  2. Bạn sẽ phải bao gồm thủ công các thư viện này có cùng phiên bản trong build.gradletệp của mình .
  3. Sau đó, đồng bộ hóa dự án của bạn.

Ví dụ:

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

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

Điểm tốt. Tôi chưa bao giờ nghĩ về việc xem cái nào thực sự là cái sai. : S Cảm ơn!
Tobias Reich

hoạt động khi phương thức giải quyết tự động lớp không thành công, cảm ơn
Odaym

10
trong / Tệp dự án / Dự án của tôi / .idea / thư viện có nhiều tệp hỗ trợ với phiên bản khác nhau. Bây giờ làm thế nào tôi biết mô-đun hoặc phụ thuộc nào đang sử dụng này?
Satpal Yadav

2
@SatpalYadav Tôi đã tìm kiếm phiên bản không khớp với phiên bản mới nhất hiện có (tôi sử dụng trong ứng dụng của mình). Ví dụ: tôi sử dụng hỗ trợ: thiết kế: 25.3.1 nhưng hộp thoại vật liệu sử dụng hỗ trợ-v13: 25.1.1. Vì vậy, tôi đã thêm hỗ trợ-v13: 25.3.1 và lỗi biến mất.
hardysim

1
Đó là giải pháp tốt nhất cho tôi cho đến nay nhưng làm thế nào tôi có thể ghi đè các lib mới hơn?
Mateusz Kaflowski 23/03/18

149

Đối với tất cả các trường hợp, không chỉ cho các phiên bản hoặc thư viện này:

Hãy chú ý đến cửa sổ thông tin nhỏ nói điều gì đó về lỗi, nó nói các ví dụ mà bạn phải thay đổi và thêm vào .

Trong trường hợp này:

Tìm thấy phiên bản 25.1.1, 24.0.0. Ví dụ bao gồm com.android.support:animated-vector-drawable:25.1.1 và com.android.support:mediarouter-v7:24.0.0

Của bạn

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

là phiên bản 25.1.1 và của bạn

com.android.support:mediarouter-v7:24.0.0

là phiên bản 24.0.0 , vì vậy bạn phải thêm mediarouter với cùng một phiên bản:

com.android.support:mediarouter-v7:25.1.1

Và làm điều đó cho mọi ví dụ mà cửa sổ thông tin nhỏ nói, trong trường hợp này tất cả các thư viện không có phiên bản 25.1.1.

Bạn phải đồng bộ hóa lớp sau khi bạn sửa thư viện được chỉ định để xem thư viện và gói tiếp theo mà bạn phải thay đổi.

QUAN TRỌNG:

Nếu bạn không sử dụng rõ ràng một hoặc nhiều thư viện được chỉ định và nó gây ra lỗi cho bạn, điều đó có nghĩa là nó đang được sử dụng bởi một thư viện khác, hãy biên dịch nó một cách rõ ràng.

Bạn cũng có thể sử dụng một phương pháp khác để xem sự khác biệt của các phiên bản của tất cả các thư viện mà bạn thực sự biên dịch (như chạy báo cáo phụ thuộc lớp hoặc đi đến các tệp thư viện của bạn), objetive thực là biên dịch tất cả các thư viện mà bạn đang sử dụng cùng một phiên bản .


1
cảm ơn rất nhiều, bạn có thể vui lòng giải thích support:mediarouterchính xác những gì không?
mrid

1
Tôi nghĩ rằng đây là một cái gì đó bạn đã chỉ ra rằng hầu hết chúng ta đã xem qua. Và tức là- "Hãy chú ý đến cửa sổ thông tin nhỏ nói điều gì đó về lỗi ....". Cảm ơn bạn, điều này bây giờ đã cho tôi hiểu rõ hơn về những gì đang thực sự xảy ra.
Ứng dụng Yo

103

Cách tốt nhất để giải quyết vấn đề là triển khai tất cả 'com.android.support: ...' được đề xuất bởi Android Studio

(Không quan trọng bạn đang sử dụng phiên bản hỗ trợ nào - 27.1.1, 28.0.0, v.v.)

Đặt con trỏ đến dòng lỗi, vd

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

Android Studio sẽ gợi ý cho bạn 'com.android.support: ...' là phiên bản khác với 'com.android.support:appcompat-v7:28.0.0'

Thí dụ

Tất cả các thư viện com.android.support phải sử dụng cùng một đặc điểm kỹ thuật phiên bản chính xác (các phiên bản trộn có thể dẫn đến sự cố thời gian chạy). Đã tìm thấy các phiên bản 28.0.0, 27.1.0, 27.0.2. Ví dụ bao gồm com.android.support:animated-vector-drawable:28.0.0 và com.android.support:exifinterface:27.1.0

Vì vậy, thêm com.android.support:animated-vector-drawable:28.0.0 & com.android.support:exifinterface:28.0.0. Bây giờ đồng bộ hóa tập tin gradle.

Từng người một cố gắng thực hiện tất cả 'com.android.support: ...' được đề xuất cho đến khi không có lỗi trong dòng này implementation 'com.android.support:appcompat-v7:28.0.0'

Trong trường hợp của tôi, tôi đã thêm

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'

Tất cả những phụ thuộc này, nó có thể khác nhau cho bạn.


tôi đã thêm thủ công cả "triển khai 'com.android.support:animated-vector-drawable:28.0.0'" và "triển khai 'com.android.support:support-media-compat:28.0.0'" nhưng "thực hiện" com.android.support:appcompat-v7:28.0.0 '"vẫn được gạch chân bởi màu đỏ
AAEM

@AAEM nếu bạn đặt con trỏ trên dòng lỗi, nó sẽ hiển thị các phụ thuộc bạn nên thêm vào tiếp theo là gì. Vui lòng thêm tất cả các phụ thuộc vào cùng một phiên bản và đồng bộ hóa tập tin lớp. Nếu nó hiển thị lỗi một lần nữa, hãy làm theo các bước một lần nữa cho đến khi không có lỗi.
Adarsh ​​Vijayan P

100

Thêm phần này vào cuối bản dựng của bạn.gradle (Module: ứng dụng):

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

   }
}

Đảm bảo rằng bạn thay thế '25 .3.1 'bằng phiên bản của thư viện hỗ trợ Android mà bạn muốn sử dụng cho tất cả các phụ thuộc, không nên thấp hơn phiên bản sdk đáng phàn nàn của bạn

hơn đồng bộ hóa lại lớp


3
Đây là những gì tôi cần, một trong những phụ thuộc của tôi đã kéo theo 27.0.1 bằng cách nào đó, ngay cả khi tôi chỉ định một phiên bản nhỏ hơn ở cấp cao nhất. Vì tò mò, tại sao bạn loại trừ "multidex"?
ray

4
Điều này đã tiết kiệm trong ngày cho tôi. Nhưng sự phát triển Android này đang trở nên phân mảnh hơn nữa mỗi khi đi qua. Mọi người cần thực sự kiểm tra mọi thư viện hỗ trợ một cách hoàn hảo trước khi tung ra. Chúng tôi không phải lúc nào cũng có thời gian để trải qua mỗi bản phát hành hỗ trợ mới bởi vì chúng tôi muốn tập trung vào việc xây dựng các sản phẩm của mình hơn là trải qua tất cả những điều này. Luôn luôn bực bội
larrytech

1
@ThinkTwiceCodeOnce Bạn có thể vào đây để tìm hiểu thêm về Groovy và các plugin inteliji của nó: jetbrains.com/help/idea/getting-started-with-groovy.html
ezzou

1
Bạn là một người đàn ông cứu người. Điều này nên được nâng cao nhiều lần!
imin

1
đây sẽ là giải pháp ... được nâng cấp
Ast

54

Tôi gặp vấn đề tương tự chính xác sau khi cập nhật lên Android Studio 2.3

Thêm dòng này vào phụ thuộc đã giải quyết vấn đề của tôi:

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

2
Tôi đã gặp vấn đề tương tự chính xác sau khi cập nhật lên Android Studio 2.3
Plugie

1
Đối với bất kỳ ai sử dụng RenderScript, tôi đặt thành renderscriptSupportModeEnabled falsesai. Và thêm biên dịch 'com.android.support:customtabs:25.2.0'và lỗi đã biến mất.
Luật Gimenez

1
@LawGimenez Và chúng ta nên sử dụng biểu hiện như thế nào nếu chúng ta chỉ vô hiệu hóa nó?
dor506

3
Có vẻ như vấn đề của tôi là do bản dịch quá, nhưng nếu tôi cần bản sao cho cái gì khác, không phải cho customtabs thì sao?
HendraWD

46

A) Chạy gradle dependencieshoặc./gradlew dependencies

B) Nhìn vào cây của bạn và tìm ra phần phụ thuộc nào của bạn đang chỉ định phiên bản thư viện hỗ trợ khác cho phần phụ thuộc mà bạn không kiểm soát.

Tôi đã không nhận ra rằng cảnh báo này cũng hiển thị nếu phần phụ thuộc hoàn toàn không được sử dụng trực tiếp bởi mã của riêng bạn. Trong trường hợp của tôi, Facebook chỉ định một số lib hỗ trợ mà tôi không sử dụng, bạn có thể thấy bên dưới hầu hết các phụ thuộc đó đã bị ghi đè bởi thông số 25.2.0 của riêng tôi, được biểu thị bằng các ký hiệu -> XXX (*) . Chế độ xem thẻ và tab tùy chỉnh không bị ai ghi đè, vì vậy tôi cần yêu cầu 25.2.0 cho những người đó mặc dù tôi không sử dụng chúng.

+--- 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 (*)

Nếu gradle đã cảnh báo bạn và cho bạn ví dụ ...

Ví dụ bao gồm com.android.support:animated-vector-drawable:25.1.1 và com.android.support:mediarouter-v7:24.0.0

... thậm chí còn dễ dàng hơn nếu bạn ném một số điểm nhấn grep cho phiên bản thấp hơn vì gradle dependenciescó thể khá dài dòng:

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

1
Từ lời giải thích của bạn, tôi hiểu rằng XXX -> YYY (*) có nghĩa là XXX bị YYY ghi đè, đó là điều cần biết
Sao Thủy

Nghĩa đen là câu trả lời hợp lệ
stef

32

Sử dụng các biến : Làm một cái gì đó như sau sẽ giúp bạn dễ dàng hơn để đảm bảo rằng bạn sử dụng cùng một phiên bản với tất cả các thư viện

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}"

Thông tin thêm về cách Google gợi ý rằng bạn xử lý phiên bản này có thể được tìm thấy trong bài viết này: https://developer.android.com/studio/build/index.html#top-level


cảm ơn Daniel F thân mến, tôi nghĩ đây là cách tốt nhất để tránh sự cố trộn phiên bản.
Hovanes Mosoyan

2
Xin vui lòng chỉ có một lưu ý: Như được đề xuất trong liên kết ở trên, chúng ta nên xác định biến loại này trong TẬP TIN CẤP CẤP CẤP HÀNG ĐẦU một lần nữa)
Hovanes Mosoyan

25

chỉ cần thêm điều này:

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

Updated cho các phiên bản SDK mới

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

Nó không giải quyết vấn đề thư viện cũ chứa SDK cũ.
CoolMind

19

Nếu cùng một lỗi là trên appcompat

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

sau đó thêm designgiải quyết nó.

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

Đối với tôi, thêm

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

đã bao gồm appcompat-v7:23.1.1trong

.idea / thư viện

không có vlc, appcompatmột mình là đủ.


Rất cám ơn, nó đã hoạt động, nhưng vai trò của 'com.android.support:design:27.0.1' là gì
Wessam El Mahdy

19

Như bạn đã thấy tất cả các câu trả lời và nhận xét ở trên nhưng câu trả lời này là để xóa một cái gì đó mà một nhà phát triển mới có thể không dễ dàng nhận được.

./gradlew -q phụ thuộc ứng dụng: phụ thuộc - biên dịch cấu hình

Dòng trên sẽ cứu cuộc sống của bạn mà không nghi ngờ gì nhưng làm thế nào để có được điểm chính xác từ kết quả của dòng trên.

Khi bạn nhận được tất cả các biểu đồ hoặc danh sách phụ thuộc từ lệnh trên thì bạn phải tìm kiếm số phiên bản xung đột mà bạn đang nhận được trong mã của mình. xin vui lòng xem hình ảnh dưới đây.

nhập mô tả hình ảnh ở đây

trong hình trên, bạn có thể thấy rằng 23.4.0 đang tạo ra sự cố nhưng điều này chúng ta không thể tìm thấy trong tệp lớp. Vì vậy, bây giờ số phiên bản này (23.4.0) sẽ cứu chúng tôi. Khi chúng ta có số này thì chúng ta sẽ tìm thấy số này trong kết quả của kết quả lệnh trên và nhập trực tiếp phụ thuộc đó trực tiếp vào tệp lớp của chúng ta. Xin vui lòng xem hình ảnh dưới đây để có được cái nhìn rõ ràng.

bạn có thể thấy rõ com.android.support:cardview-v7:23.4.0com.android.support:customtabs:23.4.0 đang sử dụng phiên bản đang tạo ra sự cố. Bây giờ chỉ cần sao chép các dòng đó từ danh sách phụ thuộc và sử dụng rõ ràng trong tệp lớp của chúng tôi nhưng với liên kết phiên bản được cập nhật

triển khai "com.android.support:cardview-v7:26.1.0" thực hiện "com.android.support:customtabs:26.1.0"


1
Cảm ơn bạn! Với các phiên bản mới hơn của studio android, nên chuyển sang triển khai thay vì biên dịch
Avi Parshan

Có bạn đúng @AviParshan chúng ta có thể sử dụng biên dịch hoặc api. Các phụ thuộc xuất hiện trong các cấu hình api sẽ được tiếp xúc quá mức với người tiêu dùng của thư viện và như vậy sẽ xuất hiện trên đường dẫn biên dịch của người tiêu dùng. Mặt khác, các phụ thuộc được tìm thấy trong cấu hình triển khai sẽ không được tiếp xúc với người tiêu dùng và do đó không bị rò rỉ vào đường dẫn biên dịch của người tiêu dùng.
anoopbryan2

sử dụng ./gradlew -q ứng dụng phụ thuộc: phụ thuộc
Sumit

15

Một cách khác để giải quyết xung đột là bắt buộc phiên bản chính xác cho tất cả các phụ thuộc như thế này:

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/cản/userguide/customizing_dependency_resolution_behavior.html


Phụ thuộc giải quyết các quy tắc là khó để duy trì. Chúng phải được duy trì thủ công cho số phiên bản và mọi thay đổi trong các thư viện hỗ trợ đã triển khai. Ví dụ: Android Studio nêu bật các phiên bản lib mới hơn có sẵn, nhưng không diễn giải các quy tắc này.
Manuel

12

Sử dụng hỗ trợ-v13 thay vì hỗ trợ-v4

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

Tôi đang gặp vấn đề với điều này: biên dịch 'com.android.support:recyclerview-v7:25.2.0'
Crime_Master_GoGo

Chính xác lỗi tương tự như trên: -> tất cả các thư viện com.android.support phải sử dụng cùng một đặc điểm kỹ thuật phiên bản chính xác Recyclerview
Crime_Master_GoGo

@Googli, Vui lòng viết compileSdkVersion , buildToolsVersion và các phụ thuộc tôi đã sử dụng này. Không vấn đề gì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'
Mehmet Hanoğlu

12

thêm những thứ này trong phần phụ thuộc cấp ứng dụng

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

Vấn đề của tôi là tương tự như của bạn. Ở đây tồn tại một lỗi!

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

Tất cả các thư viện com.android.support phải sử dụng cùng một đặc điểm kỹ thuật phiên bản chính xác (các phiên bản trộn có thể dẫn đến sự cố thời gian chạy). Tìm thấy phiên bản 25.3.0, 24.0.0. Ví dụ bao gồm 'com.android.support:animated-vector-drawable:25.3.0' và 'com.android.support:mediarouter-v7:24.0.0'

Xem ví dụ này bao gồm 'com.android.support:animated-vector-drawable:25.3.0' và 'com.android.support:mediarouter-v7:24.0.0'

chỉ cần thêm các mã này trong phần phụ thuộc, đảm bảo rằng các phiên bản giống nhau.

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

9

Tôi đã nhận được lỗi tương tự sau khi thêm compile 'com.google.android.gms:play-services:10.2.4'với biên dịch 'com.android.support:appcompat-v7:25.3.1'.

Thêm animated-vector-drawablemediarouter libssửa lỗi.

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

Tôi đã có điều này:

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

và đã nhận được lỗi này: nhập mô tả hình ảnh ở đây

Các giải pháp rất dễ dàng - tất cả các phụ thuộc chính đều chính xác, do đó, các lá - bất kỳ phụ thuộc bên thứ ba nào. Xóa từng cái một cho đến khi tìm ra thủ phạm, và hóa ra là facebook! sử dụng phiên bản 27.0.2 của thư viện hỗ trợ Android. Tôi đã cố gắng thêm phiên bản cardview 27.1.1 nhưng điều đó không hiệu quả cho dù giải pháp vẫn đủ đơn giản.

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

Tôi đã gặp phải vấn đề này sau khi nâng cấp lên android studio 3.4 và phiên bản sdk lên 28.0.0. Áp dụng phụ thuộc dưới đây đã giải quyết vấn đề cho tôi.

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

8

Tôi đã sử dụng hai thứ này để giải quyết vấn đề của mình sau khi nâng cấp lên android studio 2.3

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

8

Tôi đã có cùng một vấn đề trước đây và tôi đã có giải pháp cho nó.

Tôi vừa thêm các thư viện có phiên bản khác nhưng với cùng phiên bản của tôi support:appcompat .

Ví dụ về lỗi của bạn:

Tất cả các thư viện com.android.support phải sử dụng cùng một đặc điểm kỹ thuật phiên bản chính xác (các phiên bản trộn có thể dẫn đến sự cố thời gian chạy). Tìm thấy phiên bản 25.1.1, 24.0.0. Ví dụ bao gồm com.android.support:animated-vector-drawable:25.1.1 và com.android.support:mediarouter-v7:24.0.0

* Giải pháp là biên dịch các phiên bản của các thư viện như thế:

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

-Nếu một thư viện khác có cùng vấn đề và có một phiên bản khác chỉ cần biên dịch nó với support:appcompat phiên bản

Điều này giải quyết vấn đề của tôi và tôi hy vọng nó giải quyết vấn đề của bạn.

Lời chúc tốt nhất :)


8

Sau khi tìm kiếm và kết hợp các câu trả lời, phiên bản 2018 của câu hỏi này và nó đã hoạt động với tôi:

1) Trên tab điều hướng thay đổi nó để xem dự án

2) Điều hướng đến [YourProjectName] /. Idea / library /

3) Xóa tất cả các tệp bắt đầu bằng Gradle__com_android_support_ [libraryName]

Ví dụ: Gradle__com_android_support_animated_vector_drawable_26_0_0.xml

4) Trong tệp lớp của bạn xác định một biến và sử dụng nó để thay thế số phiên bản như $ { biếnName }

Biến Def:

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

Sử dụng biến:

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

lớp ví dụ:

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
Câu trả lời này cần giải thích thêm. Một người đọc có thể được dẫn đến tin rằng họ nên sao chép-dán toàn bộ tập tin lớp của bạn vào dự án của họ. Bạn nên giải thích lý do tại sao bạn đã thêm tiện ích mở rộng và lý do tại sao bạn đặt một số lib hỗ trợ cho phiên bản gplaysvcs, một số khác thành phiên bản supportlib và một số không thay đổi.
jungledev

8

Rất đơn giản với phiên bản mới của android studio 3.x.

Chỉ cần sao chép phiên bản nhỏ hơn phiên bản hiện tại và thêm rõ ràng với cùng số phiên bản với phiên bản hiện tại.

Thí dụ

Tìm thấy phiên bản 27.1.1, 27.1.0. Ví dụ bao gồm com.android.support:animated-vector-drawable:27.1.1 và com.android.support:exifinterface:27.1.0

Chỉ cần sao chép phiên bản com.android.support:exifinterface:27.1.0và thay đổi nó com.android.support:exifinterface:27.1.1thành phiên bản hiện tại bằng với phiên bản hiện tại bạn đang sử dụng và thêm nó vào phụ thuộc lớp của bạn như sau.

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

Lưu ý: Khi bạn đã hoàn tất, đừng quên nhấp vào Đồng bộ hóa ngay trên đầu trình chỉnh sửa.


7

Cập nhật năm 2018 cho lỗi này thêm thực hiện từ cấu trúc dự án

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

trong chế độ dự án -> Thư viện bên ngoài , bạn có thể tìm thấy sự cố của mình, trong trường hợp của tôi, tôi đang sử dụng phiên bản 28 và các thư viện bên ngoài tôi tìm thấy com.android.support:support-media-compat-26.0.0và đây là lỗi.

sau khi thực hiện support v13và nó hoạt động


Gạch chân màu đỏ biến mất với việc thực hiện này.
Trương Hiếu

6

Bạn đã xác định bất kỳ phụ thuộc nào khác để biên dịch với phiên bản 24.0.0thay vì 25.1.1. Vui lòng đặt tất cả các phiên bản phụ thuộc giống như 25.1.1.


Tôi đã cập nhật câu trả lời của mình, tất cả các phiên bản hỗ trợ có cùng phiên bản 25.1.1
bẻ khóa vào

6

Tôi đã phải thêm các dòng sau vào lớp để loại bỏ lỗi

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

Tôi đã chạy các tác vụ ./gradlew --all và kiểm tra các phụ thuộc là phiên bản khác với phiên bản được nhắm mục tiêu (25.3.1). Bạn sẽ nhận được một cái gì đó như thế này:

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

Trong trường hợp này, tôi đã nhắm mục tiêu 25.3.1 và có một số phụ thuộc nhắm mục tiêu các phiên bản khác nhau khi tôi chạy lệnh này. Mẹo nhỏ là xác định các phụ thuộc trong danh sách này đang nhắm mục tiêu các phiên bản trước đó và ghi đè điều đó bằng cách nhập phiên bản mới nhất của phụ thuộc trong Gradle.


6

Tôi có cùng một vấn đề nhưng tôi đã giải quyết điều này bằng cách thêm ba dòng đó

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'

Bây giờ mọi thứ hoạt động hoàn hảo


6

Đây là dòng chảy của tôi để khắc phục cảnh báo này

xây dựng. nâng cấp

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)
    }
}

Để xem / xác minh dependenciestất cả thư viện trong ứng dụng của bạn
Mở terminal và chạy./gradlew app:dependencies

Để xem dependenciesthư viện cụ thể trong ứng dụng của bạn, hãy làm theo hướng dẫn tại đây: - Cách loại trừ phụ thuộc của một phụ thuộc cụ thể trong Gradle

Hy vọng nó sẽ giúp


5

Mở thư viện bên ngoài của dự án bạn sẽ thấy rằng một số thư viện vẫn sử dụng phiên bản trước mặc dù bạn không đề cập đến thư viện đó vì vậy đề xuất của tôi là chỉ sử dụng phiên bản thư viện cụ thể cho những thư viện sẽ giải quyết vấn đề của bạn.


5

Tôi vừa cập nhật Kho lưu trữ hỗ trợ Android của mình lên (phiên bản: 44.0.0); sau đó các công cụ và Trình giả lập SDK Android cho phiên bản mới nhất 25.3.1 từ trình quản lý sdk> Công cụ SDK Và nó đã giải quyết vấn đề của tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.