ऐप (22.0.0) और परीक्षण ऐप (21.0.3) के लिए हल किए गए संस्करण अलग-अलग हैं


179

एपीआई 22 में अपग्रेड करने के बाद और आवश्यक संशोधन 22 का समर्थन करने के बाद मुझे निम्नलिखित चेतावनी मिल रही है:

चेतावनी: निर्भरता के साथ संघर्ष 'com.android.support:support-annotations'। ऐप (22.0.0) और परीक्षण ऐप (21.0.3) के लिए हल किए गए संस्करण अलग-अलग हैं।

ग्रेडेल स्वयं अधिक क्षमा करने वाला है, लेकिन एंड्रॉइड स्टूडियो इतना नहीं है।

मेरे पास 21.0.3 के साथ कोई निर्भरता घोषित नहीं है ... 21.0.3 का उपयोग करने वाले आश्रित पुस्तकालयों में से एक है और Google इसे बाकी बैच के साथ अपडेट करना भूल गया है?

build.gradleएक्सट्रा कट के साथ मेरी

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

अपडेट: (धन्यवाद मार्क)

ऐसा लगता है कि यह एस्प्रेसो-कॉन्ट्रिब है

+--- 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
ग्रैडल dependenciesकार्य अपराधी की पहचान करने में आपकी मदद कर सकता है: gradle.org/docs/current/userguide/…
कॉमन्सवेयर

1
धन्यवाद मार्क। ऐसा लगता है espresso-contribकि इसका कारण है ...
कोपोली

2
आप exclude21.0.3 संस्करण को ब्लॉक करने की कोशिश कर सकते हैं , 22.0.0 संस्करण में recyclerview-v7खुद को खींच सकते हैं, और प्रार्थना कर सकते हैं कि वे पर्याप्त रूप से संगत espresso-contribहैं। व्यक्तिगत रूप से, मुझे आश्चर्य है कि आप उस लंबी निर्भरता सूची के साथ अपनी पवित्रता बनाए रख रहे हैं ... :-)
कॉमन्सवेयर

1
हां। यह चाल चली। यदि आप इसे उत्तर के रूप में डालते हैं तो मैं आपको सेम दूंगा :) androidTestCompile ('com.android.support.test.espresso: एस्प्रेसो-कॉन्ट्रिब: 2.0') {अपवर्जित मॉड्यूल: 'सपोर्ट-एनोटेशन:}}
कॉपोली

1
मेरी इसी समस्या का हल सिर्फ़ सरल एंड्रॉइड स्टूडियो रिस्टार्ट ने किया था :)
लखविंदर सिंह ढिल्लों

जवाबों:


286

चरण # 1 जब इस तरह की चीज़ से निपटना है तो कमांड-लाइन ग्रैडल के साथ सहज होना है।

चरण # 2 ग्रेडल निर्भरता रिपोर्ट (जैसे, gradle -q app:dependenciesपरियोजना रूट से) को चलाने के लिए है । यह ASCII पेड़ प्रदान करेगा जैसा कि प्रश्न के अपडेट में दिखाया गया है, और आपको यह पहचानने में मदद करनी चाहिए कि परस्पर विरोधी विरूपण साक्ष्य संस्करणों के लिए क्या पूछ रहा है।

चरण # 3 यह तय करना है कि प्रतिस्थापन की आवश्यकता क्या है। आपने सिर्फ संघर्ष ( support-annotations) को बदलने के लिए चुना । व्यक्तिगत रूप से, मैं गलत-संस्करण वाले पेड़ ( recyclerview-v7) की जड़ के साथ चला गया , हालांकि सभी के लिए मुझे पता है कि इस मामले में कार्रवाई का सबसे अच्छा कोर्स नहीं हो सकता है।

चरण # 4 को excludeचरण # 3 में आपके द्वारा चुने गए ब्लॉक करने के निर्देश को जोड़ना है :

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

चरण # 5 इस बदलाव से बाहर निकलने का परीक्षण करना है। क्या आप कर रहे हैं कह रही है कि espresso-contrib है की 22.0.0 संस्करण से निपटने के लिए support-annotations। यह काम कर सकता है। यह नहीं हो सकता है। यह संघर्ष के पीछे की संगतता पर निर्भर करता है। इस मामले में, इसके support-annotationsबारे में बहुत अच्छा होना चाहिए।

चरण # 6 अपनी पसंद के पेय का उपभोग करना है, जो आपके स्थान और दिन के समय के लिए उपयुक्त है।


4
मैंने exclude group: 'com.android.support', module: 'support-annotations' तब से इस्तेमाल किया जब आपके वर्जन ने एक "
डिबेट टाइप्स

2
, 0.3 com.android.support.test: धावक: काम करता है ... यह भी करने के लिए com.android.support.test इस लागू करने के लिए विचार करना नियम: 0.3 और com.android.support.test.espresso: एस्प्रेसो कोर: 2.2
uudashr

चरण # 4 में, आप उस AndroidTestCompile निर्देश को कहाँ जोड़ रहे हैं? अगर मैं अपने एप्लिकेशन की निर्भरता ब्लॉक में उस सिंटैक्स को जोड़ने का प्रयास करता हूं तो मुझे कुछ सिंटैक्स त्रुटियां मिलती हैं। जैसा कि अभी लिखा गया है, यह ठीक-ठीक बताना कठिन है कि आप इसे कहां जोड़ते हैं।
ओएआरएम

1
@OYRM: "आप उस androidTestCompile निर्देश को कहाँ जोड़ रहे हैं?" - में dependenciesइस नमूने को चिउ-की चान से देखें ।
कॉमन्सवेयर

16
चरण # 6 यहाँ कुंजी है
Odaym

146

मैंने इसे हल करने के लिए अपनी बिल्ड.ग्रेडल स्क्रिप्ट में नीचे की पंक्ति को जोड़ा था

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

xx.x.xआपके ऐप का उपयोग करने वाले समर्थन-एनोटेशन के किसी भी संस्करण के साथ बदलें - यह आपकी निर्भरता में दिखाया जाएगा, या ग्रैडल सिंक संदेश के रूप में: Resolved version for app (xx.x.x)क्या कोई समस्या सिंकिंग होनी चाहिए।


वाह। मैं इसे अपग्रेड करने के लिए करता हूं, Junitलेकिन पूरी तरह से इसके लिए मैं इसे अन्य निर्भरता के लिए भी कर सकता हूं।
जारेड बुरो

10
यह वास्तव में Google नमूने कैसे करते हैं , यह एक टिप्पणी है "परीक्षण ऐप में समर्थन एनोटेशन का बल उपयोग, क्योंकि यह आंतरिक रूप से धावक मॉड्यूल द्वारा उपयोग किया जाता है।"
डेसिम

यह मेरे लिए सबसे अच्छा जवाब था। नोट: '23 .1.1 'को अवश्य अपडेट करें:androidTestCompile 'com.android.support:support-annotations:23.1.1'
डेविड मैनपेल

धन्यवाद, मेरे मामले में लाइन पहले से ही थी, लेकिन स्पष्ट रूप से एक परस्पर विरोधी संस्करण कहा गया था, आवश्यक एक के लिए अद्यतन किया गया और सब कुछ एक आकर्षण की तरह काम किया।
RAM237

इसे build.gradle में कैसे जोड़ें?
ubuntu_noob

58

वास्तव में यह एस्प्रेसो कॉन्ट्रिब के नए अपडेट संस्करण का एक बग है, आप इस वर्कअराउंड का उल्लेख कर सकते हैं: android-testing / build.gradle

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

2
यह मेरी समस्या थी। टिकट यहाँ है
दिबांग

3
इससे एक चेतावनी बनती है, @ RenanNery का समाधान बेहतर है
डिएगो पालोमर

यह काम नहीं करता है। मुझे अभी भी संघर्ष की त्रुटि मिलती है क्योंकिandroidTestCompile 'com.android.support.test:runner:0.5'
इगोरगानपोलस्की

1
@ बॉनी - लिंक टूटी
मुश्ताक जमील

इसने मेरे लिए काम किया। मैंने इस ब्लॉक को "android {testOptions {<here>}}" में
डाला

23

कृपया https://github.com/JakeWharton/u2020/blob/05a57bf43b9b61f16d32cbe8717af77cd608b0fb/build.gradle#L136-L140 देखें

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

इससे मेरी समस्या हल हो गई।

वैकल्पिक रूप से आप विंडोज पर gradlew चला सकते हैं और। Mac / linux के लिए .gradlew यह जरूरत पड़ने पर आपकी निर्भरता को डाउनलोड करेगा


1
इससे मुझे आज (2018-11-10) भी मदद मिली, लेकिन संस्करण 26.1.0 के साथ, संस्करण 27.1.1 के साथ संघर्ष से बचने के लिए।
बजे जेबी रेन्सबर्गर

8

मैं इस समस्या के साथ-साथ एपकॉम से जुड़े अन्य संघर्षों में भी भाग गया और मैंने जो समाधान पाया वह परीक्षण संकलन जोड़ रहा था और उन्हें उन एसडीके पर सेट कर रहा था जो आप वर्तमान में उपयोग कर रहे हैं। मेरे मामले में यह 25 है, इसलिए यह इस तरह दिखता है:

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.+'

इसके अलावा, जैसा कि आप देख सकते हैं मैंने डिज़ाइन निर्भरता को जोड़ा है, जो एंड्रॉइड मटेरियल डिज़ाइन से संबंधित है।

आशा है कि यह मदद करता है =)


8

sdkversion 25 के लिए

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

3

आप windows पर gradlew चला सकते हैं और। mac / linux के लिए .gradlew यह जरूरत पड़ने पर आपकी निर्भरता को डाउनलोड करेगा।

आप देख सकते हैं कि पुस्तकालय में से किसी एक के समर्थन एनोटेशन पर निर्भरता है या किसी भी पुस्तकालय में त्रुटि का नाम दिया गया है और इसे नीचे दी गई कुछ चीज़ों में शामिल करने का प्रयास करें

संकलन ("org.apache.maven: maven-ant-functions: $ {mavenAntTaskVer} V") {बहिष्कृत समूह: 'junit'}

त्रुटि: निर्भरता के साथ संघर्ष 'जूनियर: जूनियर'। ऐप (3.8.1) और टेस्ट ऐप (4.12) के लिए हल किए गए संस्करण अलग-अलग हैं। विवरण के लिए g.co/androidstudio/app-test-app-conflict देखें।

यह त्रुटि मुझे मिल रही थी इसलिए मैंने समस्या को ठीक करने के लिए ग्रेडिंग लाइन के ऊपर उपयोग किया


यह इस तरह की समस्या को हल करने का एक अच्छा तरीका लगता है। और इसके अलावा, इसे चलाने की कोशिश करें ।/gradlew: ऐप: निर्भरता कमांड लाइन आपके प्रोजेक्ट रूट डायरेक्टरी के तहत, यह आपके प्रोजेक्ट की निर्भरता के बारे में एक पेड़ बनाएगा, और ध्यान से जांच करेगा, फिर आप पाएंगे कि संघर्ष कहां से है।
फ्रैंक जॉर्न्स

2

बस अपनी build.gradle फ़ाइल में इन पंक्तियों को हटा दें:

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

यह उस तरह काम नहीं करता है। यह प्रोजेक्ट के लिए अधिक त्रुटियों का कारण बनता है

0

यह इंस्ट्रूमेंटेशन टेस्ट में सामान्य मुद्दा है जैसा कि यहां बताया गया है और इसे बिल्ड.ग्रेड के अंदर AndroidTestCompile के लिए निर्भरता जोड़कर बस हल किया जा सकता है। मेरे मामले में appcompat, recyclerview और डिजाइन निर्भरता में संघर्ष उत्पन्न हुआ। और निम्नलिखित पंक्तियों को जोड़कर हल किया गया

    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 और 27.1.1 के साथ एक ही समस्या हो रही थी और वास्तव में सिर्फ पूर्व को बाद में अपग्रेड करने से यह काम करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.