Uygulama (22.0.0) ve test uygulaması (21.0.3) için çözümlenmiş sürümler farklı


179

API 22'ye yükselttikten ve lib revizyon 22'yi destekledikten sonra aşağıdaki uyarıyı alıyorum:

Uyarı: 'com.android.support:support-annotations' bağımlılığı ile çatışma. Uygulama (22.0.0) ve test uygulaması (21.0.3) için çözümlenmiş sürümler farklıdır.

Gradle'ın kendisi daha bağışlayıcıdır, ancak Android Studio çok fazla değildir.

21.0.3 ...

build.gradleEkstraları keserek benim

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

Güncelleme: (Teşekkürler Mark)

Espresso katkısı var gibi görünüyor

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

5
Gradle dependenciesgörevi suçluyu tanımlamanıza yardımcı olabilir: gradle.org/docs/current/userguide/…
CommonsWare

1
Teşekkürler Mark. espresso-contribSebebi gibi görünüyor ...
copolii

2
Bir exclude21.0.3 sürümünü engellemek, 22.0.0 sürümünü recyclerview-v7kendiniz çekmek ve onların espresso-contribihtiyaçları için yeterince uyumlu olduklarını dua etmek için deneyebilirsiniz . Şahsen, bu uzun bağımlılıklar listesiyle aklını koruduğuna şaşırdım ... :-)
CommonsWare

1
Evet. Bu hile yaptı. Bunu cevap olarak koyarsanız, size fasulye vereceğim :) androidTestCompile ('com.android.support.test.espresso: espresso-katkıda: 2.0') {hariç tutma modülü: 'destek ek açıklamaları'}
copolii

1
Benim aynı sorun sadece basit android stüdyo yeniden başlatma ile çözüldü :)
Lakhwinder Singh Dhillon

Yanıtlar:


286

Adım # 1 bu tür bir şeyle uğraşırken komut satırı Gradle ile rahat etmektir.

2. Adım Gradle bağımlılıkları raporunu çalıştırmaktır (örn gradle -q app:dependencies. Proje kökünden). Bu, ASCII ağacını soru güncellemesinde gösterildiği gibi sağlayacaktır ve çakışan eser sürümleri için ne istediğini belirlemenize yardımcı olmalıdır.

Adım # neyin değiştirilmesi gerektiğine karar vermektir. Yalnızca çakışmayı ( support-annotations) değiştirmeyi seçtiniz . Şahsen, yanlış sürüm ağacının ( recyclerview-v7) köküyle giderdim , ancak herkes için bu durumda en iyi eylem yolu olmayabilir.

Adım # 3, excludeAdım # 3'te seçtiklerinizi engellemek için yönerge eklemektir :

androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.0') {
    exclude module: 'support-annotations'
}

Adım # 5 bu değişikliğin haltini test etmektir. Ne yaptığını söylediğini espresso-contrib sahiptir ait 22.0.0 sürümü ile başa çıkmak için support-annotations. Bu işe yarayabilir. Bu olmayabilir. Çatışmanın geriye dönük uyumluluğuna bağlıdır. Bu durumda, support-annotationsbu konuda oldukça iyi olmalıdır.

Adım # 6, bulunduğunuz bölgeye ve günün saatine uygun bir içecek seçmektir.


4
exclude group: 'com.android.support', module: 'support-annotations' Sürümünüzden, sürümden bir "bağımsız değişken türlerini
çıkaramazsınız

2
Çalışmalar ... bunu com.android.support.test: runner: 0.3, com.android.support.test: kurallar: 0.3 ve com.android.support.test.espresso: espresso çekirdeğine: 2.2
uudashr

4. Adımda, bu androidTestCompile yönergesini nereye ekliyorsunuz? Bu sözdizimini uygulamamın bağımlılık bloğuna eklemeye çalışırsam bazı sözdizimi hataları alıyorum. Bu şimdi yazıldığı gibi, tam olarak nereye eklediğinizi söylemek biraz zor.
OYRM

1
@OYRM: "bu androidTestCompile yönergesini nereye ekliyorsunuz?" - içeri dependencies. Chiu-Ki Chan'ın bu örneğine bakın .
CommonsWare

16
Adım # 6 burada anahtar
Odaym

146

Çözmek için ne yaptım benim build.gradle komut dosyası aşağıdaki satırı eklemek oldu

androidTestCompile 'com.android.support:support-annotations:xx.x.x'

xx.x.xUygulamanızın kullandığı destek ek açıklamalarının herhangi bir sürümüyle değiştirin ; bu, bağımlılıklarınızda veya Gradle senkronizasyon iletisinde şu şekilde gösterilir: Resolved version for app (xx.x.x)senkronizasyonda bir sorun olması durumunda.


Vay. Bunu yükseltme için yapıyorum Junitama tamamen diğer bağımlılıklar için de yapabilirim.
Jared Burrows

10
Bu, Google örneklerinin yaptığı gibi , "runner modülü tarafından dahili olarak kullanıldığı için test uygulamasında destek ek açıklamalarının kullanılmasını zorunlu kıl" ifadesini içeren bir yorumdur.
desseim

Bu benim için en iyi cevaptı. Not: '23 .1.1 ' androidTestCompile 'com.android.support:support-annotations:23.1.1'
sürümüne

Teşekkürler, benim durumumda hat zaten vardı, ama açıkça bir gerekli güncellenen, ve her şey bir cazibe gibi çalıştı çakışan bir sürümünü belirtti.
RAM237

nasıl build.gradle eklemek için?
ubuntu_noob

58

Aslında Espresso Katkı'nın yeni güncelleme sürümünün bir hatası, bu geçici çözümü önerebilirsiniz : android-testing / build.gradle

configurations.all {
    resolutionStrategy.force 'com.android.support:support-annotations:22.1.0'
}

2
Bu benim sorunumdu. Bilet burada .
theblang

3
Bu bir uyarı oluşturur, @ RenanNery'nin çözümü daha iyidir
Diego Palomar

Bu işe yaramıyor. Hala çatışma hatası alıyorumandroidTestCompile 'com.android.support.test:runner:0.5'
IgorGanapolsky

1
@bony - Bağlantı kopuk
Mushtaq Jameel

Bu benim için çalıştı. Bu bloğu "android {testOptions {<here>}}" içine
koydum

23

Lütfen https://github.com/JakeWharton/u2020/blob/05a57bf43b9b61f16d32cbe8717af77cd608b0fb/build.gradle#L136-L140

configurations.all {
  resolutionStrategy {
    force 'com.android.support:support-annotations:23.1.1'
  }
}

Bu benim sorunumu çözdü.

Alternatif olarak, gradlew'yi pencerelerde çalıştırabilirsiniz ve ./gradlew için mac / linux, gerektiğinde bağımlılığınızı indirir


1
Bu da bugün bana yardımcı oldu (2018-11-10), ancak 26.1.0 sürümü ile, 27.1.1 sürümü ile bir çatışmayı önlemek için.
JB Rainsberger

8

Ben de bu problemin yanı sıra appcompat içeren diğer çatışmalar ile karşılaştım ve bulduğum çözüm, test derlemeleri ekleyerek ve şu anda kullandığınız sdk'ye ayarlamak oldu. Benim durumumda 25, bu yüzden şöyle görünüyor:

androidTestCompile 'com.android.support:support-annotations:25.+'
androidTestCompile 'com.android.support:appcompat-v7:25.+'
androidTestCompile 'com.android.support:support-v4:25.+'
androidTestCompile 'com.android.support:recyclerview-v7:25.+'
androidTestCompile 'com.android.support:design:25.+'

Ayrıca, gördüğünüz gibi Android Materyal Tasarımı ile ilgili tasarım bağımlılığını ekledim.

Umarım yardımcı olur =)


8

sdkversion 25 için

     androidTestCompile 'com.android.support:support-annotations:25.2.0'

3

pencerelerde gradlew ve mac / linux için ./gradlew çalıştırabilirsiniz, bu gerektiğinde bağımlılığınızı indirir.

Kütüphaneden birinin destek ek açıklamasına bağımlı olup olmadığını veya herhangi bir kütüphanenin yanlışlıkla adlandırılıp adlandırılmadığını kontrol edebilir ve aşağıdaki gibi bir şeye yerleştirmeye çalışabilirsiniz.

compile ("org.apache.maven: maven-ant-görevleri: $ {mavenAntTaskVer} ‌") {grubu hariç tut: 'junit'}

Hata: Bağımlılık 'junit: junit' ile çatışma. Uygulama (3.8.1) ve test uygulaması (4.12) için çözümlenen sürümler farklıdır. Ayrıntılar için g.co/androidstudio/app-test-app-conflict adresine bakın.

Bu sorunu düzeltmek için gradle çizginin üzerinde kullanılan yüzden aldım hataydı


Bu, böyle bir sorunu çözmenin gerçekten iyi bir yolu gibi görünüyor. Ayrıca, bu ./gradlew: app: bağımlılıklar komut satırını proje kök dizininizin altında çalıştırmayı deneyin , projenizin bağımlılıkları hakkında bir ağaç oluşturur ve dikkatlice kontrol edin, sonra çatışmanın nereden geldiğini bulacaksınız.
frank jorsn

2

Build.gradle dosyanızdaki şu satırları silin:

androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

Bu şekilde çalışmıyor. Projede daha fazla hataya neden oluyor

0

Bu, burada belirtildiği gibi enstrümantasyon testinde yaygın bir sorundur ve sadece build.gradle içindeki androidTestCompile için bağımlılıklar ekleyerek çözülebilir. Benim durumumda, uygulama uyumu, geri dönüşüm görünümü ve tasarım bağımlılıklarında çatışma ortaya çıktı. Ve aşağıdaki satırları ekleyerek çözüldü

    androidTestCompile 'com.android.support:appcompat-v7:23.4.0'
    androidTestCompile 'com.android.support:recyclerview-v7:23.4.0'
    androidTestCompile 'com.android.support:design:23.4.0'

0

26.0.0 ve 27.1.1 ile aynı sorunu yaşıyordum ve aslında sadece eski olanı daha sonraya yükseltmek.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.