Semua perpustakaan com.android.support harus menggunakan spesifikasi versi yang sama persis

788

Setelah memperbarui ke android studio 2.3 saya mendapat pesan kesalahan ini. Saya tahu itu hanya petunjuk karena aplikasi berjalan secara normal tetapi ini benar-benar aneh.

Semua perpustakaan com.android.support harus menggunakan spesifikasi versi yang sama persis (pencampuran versi dapat menyebabkan crash runtime). Ditemukan versi 25.1.1, 24.0.0. Contohnya termasuk com.android.support:animated-vector-drawable:25.1.1 dan com.android.support:mediarouter-v7:24.0.0

masukkan deskripsi gambar di sini

kelas saya:

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'
}
humazed
sumber
tambahkan ini ke projectBuild.Gradle Anda sub proyek {project.configurations.all {resolutionStrategy.eachDependency {details -> if (details.requested.group == 'com.android.support' &&! details.requested.name.contains ('multidex ')) {details.useVersion "26. +"}}}}
Sunil Chaudhary

Jawaban:

906

Anda dapat menyelesaikan ini dengan salah satu solusi berikut:

Memperbarui:

Pada Android studio 3.0, itu menjadi jauh lebih mudah karena sekarang menunjukkan petunjuk yang lebih bermanfaat, jadi kita hanya perlu mengikuti petunjuk ini.
sebagai contoh: 1]

Semua perpustakaan com.android.support harus menggunakan spesifikasi versi yang sama persis (pencampuran versi dapat menyebabkan crash runtime). Ditemukan versi 27.0.2, 26.1.0. Contohnya termasuk com.android.support:animated-vector-drawable:27.0.2 dan com.android.support:customtabs:26.1.0

ada beberapa kombinasi pustaka, atau alat dan pustaka, yang tidak kompatibel, atau dapat menyebabkan bug. Salah satu ketidakcocokan tersebut adalah kompilasi dengan versi pustaka dukungan Android yang bukan versi terbaru (atau khususnya, versi yang lebih rendah dari targetSdkVersion Anda.)

Solusi:
Tambahkan perpustakaan secara eksplisit dengan versi lama tetapi dengan nomor versi baru.
dalam kasus saya com.android.support:customtabs:26.1.0jadi saya perlu menambahkan:

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

yaitu: Ambil perpustakaan dari item kedua, dan terapkan dengan nomor versi dari yang pertama.

Catatan: jangan lupa untuk menekan sync sekarang sehingga gradle dapat membangun kembali grafik dependensi dan melihat apakah ada konflik lagi.

Penjelasan:
Anda mungkin bingung dengan pesan kesalahan karena tidak menggunakan customtabsjadi bagaimana saya memiliki konflik !!
baik .. Anda tidak menggunakannya secara langsung tetapi salah satu perpustakaan Anda menggunakan versi lama secara customtabsinternal, jadi Anda perlu memintanya secara langsung.

jika Anda ingin tahu perpustakaan mana yang bertanggung jawab untuk versi lama dan mungkin meminta penulis untuk memperbarui libnya, Jalankan laporan ketergantungan Gradle, lihat jawaban lama untuk mengetahui caranya.

Catat ini


Jawaban lama:

terinspirasi oleh jawaban CommonsWare :

Jalankan laporan dependensi Gradle untuk melihat pohon dependensi lengkap Anda.

Dari sana, Anda akan melihat perpustakaan mana yang meminta versi lain dari perpustakaan Dukungan Android. Untuk apa pun yang diminta, Anda dapat memintanya secara langsung dengan versi 25.2.0 atau menggunakan pendekatan penyelesaian konflik Gradle lainnya untuk mendapatkan versi yang sama.


Memperbarui:

Pada versi plugin gradle: 3.0 compiletelah digantikan oleh implementationatau apilihat jawaban ini untuk perbedaannya.

karenanya gunakan sebagai berikut:

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

atau untuk windows cmd:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

dan cari versi yang konflik.

Bagi saya, kesalahan itu hilang setelah dihapus com.google.android.gms:play-services:10.2.0

Dan hanya menyertakan com.google.android.gms:play-services-location:10.2.0dan com.google.android.gms:play-services-maps:10.2.0karena mereka adalah satu-satunya layanan bermain yang saya gunakan.

Saya pikir gms:play-servicesketergantungan pada beberapa komponen lama dari perpustakaan dukungan, jadi kita perlu menambahkannya sendiri secara eksplisit.


untuk AS 3.0 yang lebih tua.

Lari:

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

Contoh:

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

jika ada yang tahu cara yang lebih baik di plugin gradle baru beri tahu saya.

humazed
sumber
3
com.google.android.gms:play-services:10.2.0mendukung SDK 14 dan di atasnya, jika Anda ingin menggunakan SDK 14 di bawah ini, Anda perlu menggunakan versi 10.0.1seperti yang disebutkan di stackoverflow.com/a/42315590/6248491
Sneh Pandya
2
Pertanyaan noob @humazed, di mana saya menjalankan perintah di Android Studio?
Haikal Nashuha
1
di terminal, tetapi pertama-tama, cobalah untuk mencoba hal layanan bermain
humazed
1
Apakah saya satu-satunya yang berpikir ini gila? Saya hanya ingin AdMob dan Facebook, dan mereka menolak untuk bekerja bersama ....
Jay
3
Mungkin bermanfaat untuk menunjukkan bahwa examples includeteks dalam pesan kesalahan menunjukkan contoh aktual dari proyek Anda sendiri, bukan contoh umum yang tidak jelas dari jenis masalah. Ambil pustaka dari item kedua, dan terapkan dengan nomor versi dari yang pertama.
Benjamin Kershner
203
  1. Buka project/.idea/librariesfolder di sistem file Anda dan lihat perpustakaan mana yang berbeda.
  2. Anda harus memasukkan pustaka ini secara manual dengan versi yang sama di build.gradlefile Anda .
  3. Kemudian, sinkronkan proyek Anda.

Misalnya:

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

// Wrong library version found on 1st point
compile 'com.android.support:customtabs:25.2.0'
João Paulo Paiva
sumber
Poin yang bagus. Saya tidak pernah berpikir untuk melihat yang mana yang sebenarnya salah. : S Terima kasih!
Tobias Reich
berfungsi ketika metode penyelesaian otomatis bertahap tidak, terima kasih
Odaym
10
di / File Proyek / Proyek saya / .idea / perpustakaan ada beberapa file dukungan dengan versi yang berbeda. Sekarang bagaimana saya tahu modul atau dependensi mana yang menggunakan ini?
Satpal Yadav
2
@ SatpalYadav Saya telah mencari versi yang tidak cocok dengan versi terbaru yang tersedia (saya gunakan di aplikasi saya). Misalnya saya menggunakan dukungan: desain: 25.3.1 tetapi bahan-dialog menggunakan dukungan-v13: 25.1.1. Jadi saya telah menambahkan support-v13: 25.3.1 dan kesalahannya hilang.
hardysim
1
Itulah solusi terbaik untuk saya sejauh ini tetapi bagaimana saya bisa mengesampingkan lib yang lebih baru?
Mateusz Kaflowski
149

Untuk semua kasus, tidak hanya untuk versi atau pustaka ini:

Perhatikan jendela informasi kecil yang mengatakan sesuatu tentang kesalahan, ia mengatakan contoh yang harus Anda ubah dan tambahkan .

Pada kasus ini:

Ditemukan versi 25.1.1, 24.0.0. Contohnya termasuk com.android.support:animated-vector-drawable:25.1.1 dan com.android.support:mediarouter-v7:24.0.0

Anda

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

adalah versi 25.1.1 , dan versi Anda

com.android.support:mediarouter-v7:24.0.0

adalah versi 24.0.0 , jadi Anda harus menambahkan mediarouter dengan versi yang sama:

com.android.support:mediarouter-v7:25.1.1

Dan lakukan itu untuk setiap contoh yang dikatakan jendela informasi kecil, dalam hal ini semua perpustakaan yang tidak memiliki versi 25.1.1.

Anda harus menyinkronkan gradle setelah Anda memperbaiki pustaka yang ditunjukkan untuk melihat pustaka dan paket berikutnya yang harus Anda ubah.

PENTING:

Jika Anda tidak secara eksplisit menggunakan satu atau lebih perpustakaan yang ditentukan dan itu memberi Anda kesalahan, itu berarti sedang digunakan secara internal oleh perpustakaan lain, tetap kompilasi secara eksplisit.

Anda juga dapat menggunakan metode lain untuk melihat perbedaan versi dari semua perpustakaan yang Anda kompilasi (seperti menjalankan laporan dependensi gradle atau pergi ke file perpustakaan Anda), tujuan sebenarnya adalah mengkompilasi semua perpustakaan yang Anda gunakan dengan versi yang sama .

Brandon Zamudio
sumber
1
terima kasih banyak, bisa tolong jelaskan apa yang support:mediaroutersebenarnya dilakukannya?
mrid
1
Saya pikir ini adalah sesuatu yang telah Anda tunjukkan bahwa sebagian besar dari kita telah kelihatan berlebihan. Dan ie- "Perhatikan jendela informasi kecil yang mengatakan sesuatu tentang kesalahan ....". Terima kasih, ini sekarang memberi saya pemahaman yang lebih baik tentang apa yang sebenarnya terjadi.
Aplikasi Yo
103

Cara terbaik untuk menyelesaikan masalah adalah menerapkan semua 'com.android.support: ...' yang disarankan oleh Android Studio

(Tidak masalah versi dukungan apa yang Anda gunakan - 27.1.1, 28.0.0 dll.)

Tempatkan kursor ke garis kesalahan mis

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

Android Studio akan menyarankan Anda yang 'com.android.support: ...' versi berbeda dari 'com.android.support:appcompat-v7:28.0.0'

Contoh

Semua perpustakaan com.android.support harus menggunakan spesifikasi versi yang sama persis (pencampuran versi dapat menyebabkan crash runtime). Versi yang ditemukan 28.0.0, 27.1.0, 27.0.2. Contohnya termasuk com.android.support:animated-vector-drawable:28.0.0 dan com.android.support:exifinterface:27.1.0

Jadi tambahkan com.android.support:animated-vector-drawable:28.0.0 & com.android.support:exifinterface:28.0.0. Sekarang sinkronkan file gradle.

Satu per satu cobalah untuk mengimplementasikan semua yang disarankan 'com.android.support: ...' hingga tidak ada kesalahan di baris ini implementation 'com.android.support:appcompat-v7:28.0.0'

Dalam kasus saya, saya menambahkan

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'

Semua dependensi ini, bisa berbeda untuk Anda.

Adarsh ​​Vijayan P
sumber
saya secara manual menambahkan "implementasi 'com.android.support:animated-vector-drawable:28.0.0'" dan "implementasi 'com.android.support:support-media-compat:28.0.0'" tetapi "implementasi" com.android.support:appcompat-v7:28.0.0 '"masih digarisbawahi oleh merah
AAEM
@AAEM jika Anda meletakkan kursor pada baris kesalahan akan menunjukkan dependensi apa yang harus Anda tambahkan selanjutnya. Silakan tambahkan semua dependensi ke versi yang sama dan sinkronkan file gradle. Jika itu menunjukkan kesalahan lagi, ikuti langkah-langkah lagi sampai tidak ada kesalahan.
Adarsh ​​Vijayan P
100

Tambahkan ini di akhir build.gradle Anda (Modul: aplikasi):

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

   }
}

Pastikan Anda mengganti '25 .3.1 'dengan versi pustaka dukungan android yang ingin Anda gunakan untuk semua dependensi, itu tidak boleh lebih rendah dari versi sdk Anda yang lemah

dari sinkronisasi ulang gradle

ezzou
sumber
3
Inilah yang saya butuhkan, salah satu dari dependensi saya adalah menarik 27.0.1 entah bagaimana, bahkan ketika saya menentukan versi yang lebih rendah di tingkat atas. Karena penasaran, mengapa Anda mengecualikan "multidex"?
ray
4
Ini telah menyelamatkan hari bagi saya. Namun perkembangan android ini menjadi semakin terfragmentasi setiap lewatnya. Orang-orang harus benar-benar memeriksa setiap perpustakaan dukungan dengan sempurna sebelum meluncurkannya. Kami tidak selalu memiliki kemewahan waktu untuk melalui setiap rilis dukungan baru karena kami ingin fokus membangun produk kami daripada melalui semua ini. Itu selalu membuat frustrasi
larrytech
1
@ThinkTwiceCodeOnce Anda dapat pergi ke sini untuk mempelajari lebih lanjut tentang groovy, dan plugin inteliji-nya: jetbrains.com/help/idea/getting-started-with-groovy.html
ezzou
1
Anda adalah pria penyelamat. Ini harus ditingkatkan berkali-kali!
imin
1
ini harus menjadi solusinya ... ditingkatkan
Ast
54

Saya memiliki masalah yang sama persis setelah memperbarui ke Android Studio 2.3

Menambahkan baris ini ke dependensi memecahkan masalah saya:

compile 'com.android.support:customtabs:25.2.0'
Berat Baran Cevik
sumber
2
Saya memiliki masalah yang sama persis setelah memperbarui ke Android Studio 2.3
Plugie
1
Bagi siapa pun yang menggunakan RenderScript, saya setel renderscriptSupportModeEnabled falseke false. Dan menambahkan kompilasi 'com.android.support:customtabs:25.2.0'dan kesalahan hilang.
Law Gimenez
1
@LawGimenez Dan bagaimana kita harus menggunakan renderscript jika kita baru saja menonaktifkannya?
dor506
3
sepertinya masalah saya adalah karena renderscript juga, tetapi bagaimana jika saya perlu renderscript untuk hal lain, bukan untuk customtabs?
HendraWD
46

A) Jalankan gradle dependenciesatau./gradlew dependencies

B) Lihatlah pohon Anda dan cari tahu mana dari dependensi Anda menentukan versi perpustakaan dukungan yang berbeda untuk dependensi yang tidak Anda kontrol.

Saya tidak menyadari bahwa peringatan ini juga ditampilkan jika dependensi sepenuhnya tidak digunakan secara langsung oleh kode Anda sendiri. Dalam kasus saya, Facebook menentukan beberapa lib dukungan yang tidak saya gunakan, Anda dapat melihat di bawah sebagian besar dependensi itu ditimpa oleh spesifikasi saya sendiri 25.2.0, dilambangkan dengan simbol -> XXX (*) . Tampilan kartu dan tab kustom lib tidak ditimpa oleh siapa pun, jadi saya perlu meminta 25.2.0 untuk itu sendiri meskipun saya tidak menggunakannya.

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

Jika gradle sudah memperingatkan Anda dan memberi Anda contoh ...

Contohnya termasuk com.android.support:animated-vector-drawable:25.1.1 dan com.android.support:mediarouter-v7:24.0.0

... bahkan lebih mudah jika Anda memasukkan beberapa highlight grep untuk versi yang lebih rendah karena gradle dependenciesbisa sangat verbose:

./gradlew dependencies | grep --color -E 'com.android.support:mediarouter-v7|$'
Daniel Wilson
sumber
1
Dari penjelasan Anda, saya mengerti bahwa XXX -> YYY (*) berarti bahwa XXX diganti oleh YYY, itu bagus untuk diketahui
Mercury
Secara harfiah satu-satunya jawaban yang valid.
stef
32

Gunakan variabel : Melakukan sesuatu seperti berikut ini akan memudahkan Anda untuk memastikan bahwa Anda menggunakan versi yang sama dengan semua pustaka

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

Informasi lebih lanjut tentang cara Google menyarankan agar Anda menangani versi ini dapat ditemukan di artikel ini: https://developer.android.com/studio/build/index.html#top-level

Daniel F
sumber
terima kasih Dear Daniel F, saya pikir ini adalah cara terbaik untuk menghindari masalah pencampuran versi.
Hovanes Mosoyan
2
Tolong hanya satu catatan: Seperti yang disarankan dalam tautan di atas, kita harus mendefinisikan variabel tipe ini dalam TOP LEVEL GRADLE FILE terima kasih lagi)
Hovanes Mosoyan
25

tambahkan saja ini:

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

Updated untuk versi SDK baru

compile 'com.android.support:mediarouter-v7:28.0.0-alpha3'
Mohsen mokhtari
sumber
Itu tidak memecahkan masalah bahwa perpustakaan lama berisi SDK tua.
CoolMind
19

Jika kesalahan yang sama aktif appcompat

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

kemudian menambahkan designmemecahkannya.

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

Bagi saya, menambahkan

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

termasuk appcompat-v7:23.1.1dalam

.idea / perpustakaan

tanpa vlc, appcompatsendirian sudah cukup.

Prab
sumber
Banyak terima kasih, itu berhasil, tetapi apa peran 'com.android.support:design:27.0.1'
Wessam El Mahdy
19

Seperti yang telah Anda lihat semua jawaban dan komentar di atas, tetapi jawaban ini adalah untuk menghapus sesuatu yang mungkin tidak mudah diperoleh pengembang baru.

./gradlew -q dependensi aplikasi: dependensi --compilasi konfigurasi

Baris di atas akan menyelamatkan hidup Anda tanpa keraguan tetapi bagaimana mendapatkan poin yang tepat dari hasil baris di atas.

Ketika Anda mendapatkan semua bagan dependensi atau daftar dari perintah di atas maka Anda harus mencari nomor versi yang bertentangan yang Anda dapatkan dalam kode Anda. silakan lihat gambar di bawah ini.

masukkan deskripsi gambar di sini

pada gambar di atas Anda dapat melihat bahwa 23.4.0 menciptakan masalah tetapi ini tidak dapat kami temukan di file gradle kami. Jadi sekarang nomor versi ini (23.4.0) akan menyelamatkan kita. Ketika kita memiliki nomor ini maka kita akan menemukan nomor ini di hasil dari hasil perintah di atas dan langsung mengimpor ketergantungan itu langsung ke file gradle kita. Silakan lihat gambar di bawah ini untuk mendapatkan tampilan yang jelas.

Anda dapat dengan jelas melihat bahwa com.android.support:cardview-v7:23.4.0 dan com.android.support:customtabs:23.4.0 menggunakan versi yang menciptakan masalah. Sekarang cukup salin baris tersebut dari daftar ketergantungan dan gunakan secara eksplisit dalam file gradle kami tetapi dengan tautan versi yang diperbarui

implementasi "com.android.support:cardview-v7:26.1.0" implementasi "com.android.support:customtabs:26.1.0"

anoopbryan2
sumber
1
Terima kasih! Dengan versi android studio yang lebih baru, itu harus dialihkan ke implementasi alih-alih kompilasi
Avi Parshan
Ya Anda benar @AviParshan kita bisa menggunakan kompilasi atau api. Ketergantungan yang muncul dalam konfigurasi api akan terpapar secara transparan kepada konsumen perpustakaan, dan dengan demikian akan muncul pada kompilasi classpath konsumen. Ketergantungan yang ditemukan dalam konfigurasi implementasi akan, di sisi lain, tidak terpapar ke konsumen, dan karenanya tidak bocor ke kompilasi classpath konsumen.
anoopbryan2
gunakan ./gradlew -q aplikasi dependensi: dependensi
Sumit
15

Cara lain untuk menyelesaikan konflik adalah dengan memaksa versi yang benar untuk semua dependensi seperti ini:

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

Gainder
sumber
Ketergantungan aturan penyelesaian sulit dipertahankan. Mereka harus dikelola secara manual untuk nomor versi dan setiap perubahan di perpustakaan dukungan yang diterapkan. Misalnya Android Studio menyoroti versi Lib yang lebih baru yang tersedia, tetapi tidak menafsirkan aturan ini.
Manuel
12

Gunakan dukungan-v13 alih-alih dukungan-v4

compile 'com.android.support:support-v13:25.2.0'
Mehmet Hanoğlu
sumber
Saya mendapatkan masalah dengan ini: kompilasi 'com.android.support:recyclerview-v7:25.2.0'
Crime_Master_GoGo
Kesalahan yang sama persis seperti di atas: -> semua perpustakaan com.android.support harus menggunakan spesifikasi versi yang sama persis Recyclerview
Crime_Master_GoGo
@Googli, Tolong tulis compileSdkVersion , buildToolsVersion dan dependensi yang saya gunakan ini. Tidak masalahcompile '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

tambahkan ini di dependensi tingkat aplikasi

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'
Mohammad Maaz
sumber
9

Masalah saya mirip dengan Anda. Di sini ada kesalahan!

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

Semua perpustakaan com.android.support harus menggunakan spesifikasi versi yang sama persis (pencampuran versi dapat menyebabkan crash runtime). Ditemukan versi 25.3.0, 24.0.0. Contohnya termasuk 'com.android.support:animated-vector-drawable:25.3.0' dan 'com.android.support:mediarouter-v7:24.0.0'

Lihat Contoh ini termasuk 'com.android.support:animated-vector-drawable:25.3.0' dan 'com.android.support:mediarouter-v7:24.0.0'

cukup tambahkan kode-kode ini dalam dependensi, pastikan versinya sama.

compile 'com.android.support:animated-vector-drawable:25.3.0'
compile 'com.android.support:mediarouter-v7:25.3.0'
Yanbin Hu
sumber
9

Saya mendapat kesalahan yang sama setelah menambahkan compile 'com.google.android.gms:play-services:10.2.4'dengan kompilasi 'com.android.support:appcompat-v7:25.3.1'.

Menambah animated-vector-drawabledan mediarouter libsmemperbaiki masalah.

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'
Sandeep
sumber
9

Saya punya ini:

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

dan mendapat kesalahan ini: masukkan deskripsi gambar di sini

Solusinya mudah - dependensi utama semuanya benar sehingga daun - ketergantungan pihak ketiga. Dihapus satu per satu sampai ditemukan pelakunya, dan ternyata menjadi facebook! menggunakan versi 27.0.2 dari perpustakaan dukungan android. Saya mencoba menambahkan cardview versi 27.1.1 tetapi itu tidak berhasil meskipun solusinya masih cukup sederhana.

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'
}
Sagar Patel
sumber
9

Saya menghadapi masalah ini setelah memutakhirkan ke android studio 3.4 dan versi SDK ke 28.0.0. Menerapkan ketergantungan di bawah ini memecahkan masalah bagi saya.

    implementation 'com.android.support:exifinterface:28.0.0'
Shaon
sumber
8

Saya menggunakan keduanya untuk menyelesaikan masalah saya setelah memutakhirkan ke android studio 2.3

compile 'com.android.support:animated-vector-drawable:25.0.0'
compile 'com.android.support:mediarouter-v7:25.0.0'
Aparajita Sinha
sumber
8

Saya memiliki masalah yang sama sebelumnya dan saya mendapat solusinya.

Saya baru saja menambahkan perpustakaan yang memiliki versi lain tetapi dengan versi saya yang sama support:appcompat.

Untuk kesalahan Anda misalnya:

Semua perpustakaan com.android.support harus menggunakan spesifikasi versi yang sama persis (pencampuran versi dapat menyebabkan crash runtime). Ditemukan versi 25.1.1, 24.0.0. Contohnya termasuk com.android.support:animated-vector-drawable:25.1.1 dan com.android.support:mediarouter-v7:24.0.0

* Solusinya adalah dengan mengkompilasi versi perpustakaan ini seperti itu:

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

-Jika perpustakaan lain memiliki masalah yang sama dan memiliki versi lain hanya kompilasi dengan Anda support:appcompat versi

Ini menyelesaikan masalah saya dan saya harap ini menyelesaikan masalah Anda.

Semoga sukses :)

Hesham Morsy
sumber
8

Setelah mencari dan menggabungkan jawaban, versi 2018 pertanyaan ini dan berhasil untuk saya:

1) Pada tab navigasi ubahlah ke tampilan proyek

2) Navigasikan ke [NamaProyek Anda] /. Idea / libraries /

3) Hapus semua file yang dimulai dengan Gradle__com_android_support_ [libraryName]

Misalnya: Gradle__com_android_support_animated_vector_drawable_26_0_0.xml

4) Dalam file gradle Anda, tentukan variabel dan gunakan untuk mengganti nomor versi seperti $ {variableName}

Variabel def:

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

Gunakan variabel:

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

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

}
Ali Karaca
sumber
1
Jawaban ini perlu penjelasan lebih lanjut. Seorang pembaca dapat dituntun untuk percaya bahwa mereka harus menyalin-tempel seluruh file gradle Anda ke proyek mereka. Anda harus menjelaskan mengapa Anda menambahkan ekstensi dan mengapa Anda menetapkan beberapa lib dukungan ke versi gplaysvcs, yang lain ke versi supportlib, dan beberapa tidak berubah.
jungledev
8

Sangat Sederhana dengan versi baru dari studio android 3.x.

Cukup salin versi yang kurang dari versi saat ini dan tambahkan secara eksplisit dengan nomor versi yang sama dengan versi saat ini.

Contoh

Ditemukan versi 27.1.1, 27.1.0. Contohnya termasuk com.android.support:animated-vector-drawable:27.1.1 dan com.android.support:exifinterface:27.1.0

Cukup salin versi com.android.support:exifinterface:27.1.0dan ubah ke com.android.support:exifinterface:27.1.1sehingga menjadi sama dengan versi saat ini yang Anda gunakan dan tambahkan ke dependensi gradle Anda sebagai berikut.

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

Catatan: Setelah selesai jangan lupa klik Sinkronkan sekarang di bagian atas editor.

Muhammad
sumber
7

pada 2018 pembaruan untuk kesalahan ini menambahkan implementasi dari struktur proyek

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

dalam mode proyek -> Perpustakaan Eksternal di sana Anda dapat menemukan masalah Anda, dalam kasus saya saya menggunakan versi 28 dan perpustakaan eksternal yang saya temukan com.android.support:support-media-compat-26.0.0 dan di sini ada kesalahan.

setelah implementasi support v13dan berfungsi

Selalu Bijoy
sumber
Garis bawah merah menghilang dengan implementasi ini.
Truong Hieu
6

Anda telah menentukan ketergantungan lain untuk dikompilasi dengan versi, 24.0.0bukan 25.1.1. Silakan tetapkan semua versi dependensi sama dengan 25.1.1.

Sneh Pandya
sumber
Saya telah memperbarui jawaban saya, semua versi dukungan memiliki versi yang sama 25.1.1
humazed
6

Saya harus menambahkan baris berikut dalam gradle untuk menghapus kesalahan

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'
Bersyukur
sumber
6

Saya menjalankan tugas ./gradlew --all dan memeriksa dependensi yang merupakan versi yang berbeda dari versi yang ditargetkan (25.3.1). Anda akan mendapatkan sesuatu seperti ini:

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

Dalam hal ini, saya menargetkan 25.3.1, dan memiliki beberapa dependensi yang menargetkan berbagai versi ketika saya menjalankan perintah ini. Caranya adalah mengidentifikasi dependensi dalam daftar ini yang menargetkan versi sebelumnya, dan menggantinya dengan mengimpor versi terbaru dari dependensi di Gradle.

Matt W
sumber
6

Saya memiliki Masalah yang sama tetapi saya memecahkan ini Dengan menambahkan Tiga Garis itu

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'

sekarang semuanya bekerja dengan sempurna

Hamza Rahman
sumber
6

Inilah aliran saya untuk memperbaiki peringatan ini

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

Untuk melihat / memverifikasi dependenciessemua perpustakaan di aplikasi Anda
Buka terminal dan jalankan./gradlew app:dependencies

Untuk melihat dependenciesperpustakaan tertentu di aplikasi Anda, ikuti tutorial di sini: - Bagaimana mengecualikan dependensi dari dependensi tertentu di Gradle

Semoga ini bisa membantu

Phan Van Linh
sumber
5

Buka pustaka eksternal proyek Anda, Anda akan melihat bahwa beberapa pustaka masih menggunakan versi sebelumnya meskipun Anda tidak menyebutkan pustaka tersebut sehingga saran saya hanya menggunakan versi pustaka tertentu untuk mereka yang akan memecahkan masalah Anda.

Subho
sumber
5

Saya baru saja memperbarui Repositori Dukungan Android saya ke (revisi: 44.0.0); kemudian Android SDK tools dan Emulator ke versi terbaru 25.3.1 dari sdk manager> SDK tools Dan itu memecahkan masalah saya.

Ajit Thapa
sumber