Setelah memutakhirkan ke API 22 dan mendukung revisi lib 22 saya mendapatkan peringatan berikut:
Peringatan: Konflik dengan ketergantungan 'com.android.support:support-annotations'. Versi yang diselesaikan untuk aplikasi (22.0.0) dan aplikasi uji (21.0.3) berbeda.
Gradle sendiri lebih memaafkan, tetapi Android Studio, tidak begitu banyak.
Saya tidak memiliki dependensi yang dideklarasikan dengan 21.0.3 ... apakah salah satu pustaka dependen menggunakan 21.0.3 dan Google lupa untuk memperbaruinya dengan sisa batch?
Saya build.gradle
dengan ekstra dipotong
android {
compileSdkVersion 22
buildToolsVersion '22'
defaultConfig {
applicationId "com.REDACTED.android"
minSdkVersion 14
targetSdkVersion 22
renderscriptSupportModeEnabled true
versionName '1.0.0'
versionCode 100
}
buildTypes {
release {
minifyEnabled true
zipAlignEnabled true
signingConfig signingConfigs.release
}
debug {
minifyEnabled false
zipAlignEnabled true
signingConfig signingConfigs.debug
}
}
dependencies {
provided 'org.projectlombok:lombok:1.16.2'
googleCompile 'com.google.android.gms:play-services-base:6.5.87'
compile 'com.android.support:support-v4:22.0.0'
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'com.android.support:support-v13:22.0.0'
compile 'com.android.support:cardview-v7:22.0.0'
compile 'com.android.support:palette-v7:22.0.0'
compile 'com.android.support:support-annotations:22.0.0'
compile 'com.github.chrisbanes.photoview:library:1.2.3'
compile 'org.apache.commons:commons-lang3:3.3.2'
compile 'commons-io:commons-io:2.4'
compile 'commons-codec:commons-codec:1.10'
compile 'com.jakewharton:butterknife:6.1.0'
compile 'com.jakewharton:disklrucache:2.0.2'
compile 'com.squareup:otto:1.3.6'
compile 'com.squareup.picasso:picasso:2.5.0'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.okhttp:okhttp:2.2.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
compile 'com.squareup.okio:okio:1.2.0'
compile 'com.flaviofaria:kenburnsview:1.0.6'
compile 'com.edmodo:cropper:1.0.1'
compile 'com.getbase:floatingactionbutton:1.8.0'
compile 'com.nispok:snackbar:2.10.2'
compile 'com.github.ksoichiro:android-observablescrollview:1.5.0'
compile 'in.srain.cube:grid-view-with-header-footer:1.0.9'
compile 'de.hdodenhof:circleimageview:1.2.2'
compile fileTree(dir: 'libs', include: '*.jar')
// Test Only Dependencies
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.0'
}
Pembaruan: (Terima kasih Tandai)
Sepertinya itu espresso-contrib
+--- com.android.support.test:testing-support-lib:0.1 (*)
\--- com.android.support.test.espresso:espresso-contrib:2.0
+--- com.android.support:recyclerview-v7:21.0.3
| +--- com.android.support:support-annotations:21.0.3
| \--- com.android.support:support-v4:21.0.3
| \--- com.android.support:support-annotations:21.0.3
+--- com.android.support:support-v4:21.0.3 (*)
\--- com.android.support.test.espresso:espresso-core:2.0 (*)
android
android-support-library
copolii
sumber
sumber
dependencies
Tugas Gradle mungkin dapat membantu Anda mengidentifikasi penyebabnya: gradle.org/docs/current/userguide/…espresso-contrib
penyebabnya ...exclude
untuk memblokir edisi 21.0.3recyclerview-v7
, menarik edisi 22.0.0 sendiri, dan berdoa agar mereka cukup kompatibel untukespresso-contrib
kebutuhan. Secara pribadi, saya kagum bahwa Anda mempertahankan kewarasan Anda dengan daftar dependensi yang panjang ... :-)Jawaban:
Langkah # 1 ketika berhadapan dengan hal semacam ini adalah untuk merasa nyaman dengan baris perintah Gradle.
Langkah # 2 adalah menjalankan laporan dependensi Gradle (mis.,
gradle -q app:dependencies
Dari root proyek). Ini akan memberikan pohon ASCII seperti yang ditunjukkan dalam pembaruan pertanyaan, dan itu akan membantu Anda mengidentifikasi apa yang meminta versi artefak yang saling bertentangan.Langkah # 3 adalah memutuskan apa yang perlu diganti. Anda memilih untuk mengganti hanya konflik (
support-annotations
). Secara pribadi, saya akan pergi dengan root dari pohon versi yang salah (recyclerview-v7
), meskipun untuk semua yang saya tahu itu mungkin bukan tindakan terbaik dalam kasus ini.Langkah # 4 adalah menambahkan
exclude
arahan untuk memblokir apa yang Anda pilih pada Langkah # 3:Langkah # 5 adalah untuk menguji heck out dari perubahan ini. Apa yang Anda lakukan adalah mengatakan bahwa
espresso-contrib
harus berurusan dengan edisi 22.0.0support-annotations
. Itu mungkin berhasil. Itu mungkin tidak. Itu tergantung pada kompatibilitas konflik. Dalam hal ini,support-annotations
harusnya cukup bagus tentang hal itu.Langkah # 6 adalah mengonsumsi minuman pilihan Anda, yang sesuai untuk lokal dan waktu Anda.
sumber
exclude group: 'com.android.support', module: 'support-annotations'
karena versi Anda memunculkan peringatan "tidak dapat menyimpulkan jenis argumen" dari gradledependencies
. Lihat contoh ini dari Chiu-Ki Chan.Apa yang saya lakukan untuk menyelesaikannya adalah menambahkan baris di bawah ini ke skrip build.gradle saya
Ganti
xx.x.x
dengan versi anotasi dukungan apa pun yang digunakan aplikasi Anda - ini akan ditampilkan dalam dependensi Anda, atau pesan sinkronisasi Gradle sebagai:Resolved version for app (xx.x.x)
jika ada masalah sinkronisasi.sumber
Junit
tetapi benar-benar untuk mendapatkan saya bisa melakukannya untuk dependensi lain juga.androidTestCompile 'com.android.support:support-annotations:23.1.1'
Sebenarnya ini adalah bug dari versi pembaruan baru dari Espresso Contrib, Anda dapat merujuk solusi ini: android-testing / build.gradle
sumber
androidTestCompile 'com.android.support.test:runner:0.5'
Silakan merujuk https://github.com/JakeWharton/u2020/blob/05a57bf43b9b61f16d32cbe8717af77cd608b0fb/build.gradle#L136-L140
Ini menyelesaikan masalah saya.
Atau Anda dapat menjalankan gradlew di windows dan ./gradlew untuk mac / linux ini akan mengunduh ketergantungan Anda saat diperlukan
sumber
Saya juga mengalami masalah ini serta konflik lain yang melibatkan appcompat dan solusi yang saya temukan adalah menambahkan kompilasi tes dan mengaturnya ke SDK yang sedang Anda gunakan. Dalam kasus saya ini 25, jadi terlihat seperti ini:
Selanjutnya, seperti yang Anda lihat saya menambahkan ketergantungan desain, yang terkait dengan Desain Material Android.
Semoga ini membantu =)
sumber
untuk sdkversion 25
sumber
Anda dapat menjalankan gradlew di windows dan ./gradlew untuk mac / linux ini akan mengunduh ketergantungan Anda saat diperlukan.
Anda dapat memeriksa apakah salah satu pustaka memiliki ketergantungan pada anotasi dukungan atau pustaka mana pun yang namanya salah dan mencoba untuk mengecualikannya secara bertahap seperti di bawah ini
kompilasi ("org.apache.maven: maven-semut-tugas: $ {mavenAntTaskVer} ") {kecualikan grup: 'junit'}
Kesalahan: Konflik dengan ketergantungan 'junit: junit'. Versi yang diselesaikan untuk aplikasi (3.8.1) dan aplikasi uji (4.12) berbeda. Lihat g.co/androidstudio/app-test-app-conflict untuk detailnya.
ini adalah kesalahan yang saya dapatkan sehingga saya menggunakan garis gradle di atas untuk memperbaiki masalah
sumber
Hapus saja baris-baris ini di file build.gradle Anda:
sumber
Ini adalah masalah umum dalam uji instrumentasi seperti yang dinyatakan di sini dan dapat diatasi hanya dengan menambahkan dependensi untuk androidTestCompile di dalam build.gradle. Dalam kasus saya, konflik muncul di appcompat, recyclerview, dan dependensi desain. Dan diselesaikan dengan menambahkan baris berikut
sumber
Saya mengalami masalah yang sama dengan 26.0.0 dan 27.1.1 dan sebenarnya hanya meningkatkan yang sebelumnya untuk membuatnya berfungsi.
sumber