Mockwebserver in gradle build assembly error

This entry in my gradle file:

androidTestCompile ('com.squareup.okhttp:mockwebserver:2.7.0')

causes an error:

Warning:Conflict with dependency 'com.squareup.okio:okio'. Resolved versions for app (1.8.0) and test app (1.6.0) differ. See http://g.co/androidstudio/app-test-app-conflict for details.

I tried commenting out compilation entries in the gradle file to find out which one is inconsistent, but I just can't find which one uses com.squareup.okio: okio.

UPDATE: I was able to get the dependencies by doing: gradlew.bat app: dependencies> c: \ tmp \ output.txt

+--- com.squareup.retrofit2:retrofit:2.0.0 -> 2.1.0
|    \--- com.squareup.okhttp3:okhttp:3.3.0
|         \--- com.squareup.okio:okio:1.8.0


--- com.squareup.okhttp:mockwebserver:2.7.0
|    +--- com.squareup.okhttp:okhttp:2.7.0
|    |    \--- com.squareup.okio:okio:1.6.0

So, as you can see, retrofit 2.0 uses okhttp3, which uses okio: 1.8.0. Mockwebserver: 2.7.0, on the other hand, uses okhttp: 2.7.0, which uses okio: 1.6.0. So how can I solve this?

Here are the entries in the "dependencies" section of my gradle file:

compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:24.2.1'


        //retrofit
        compile 'com.squareup.retrofit2:retrofit:2.0.0'
        compile 'com.squareup.retrofit2:converter-gson:2.+'
        compile 'com.squareup.retrofit2:adapter-rxjava:2.+'
        compile 'com.squareup.retrofit2:retrofit-mock:2.+'



        //recycler view
        compile 'com.android.support:recyclerview-v7:+'

        //picasso image caching
        compile 'com.squareup.picasso:picasso:2.5.2'


        //jackson parser
        compile (
            [group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.4.1']
        )

        //Dagger
        compile 'com.google.dagger:dagger:2.7'
        apt 'com.google.dagger:dagger-compiler:2.7'

        //constraint based layouts
        compile 'com.android.support:design:24.1.1'
        compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4'

        //for chrome debugging
        compile 'com.facebook.stetho:stetho:1.4.1'
        compile 'com.facebook.stetho:stetho-okhttp3:1.4.1' //for retrofit

        //RxJava
        compile 'io.reactivex:rxandroid:1.2.1'
        // Because RxAndroid releases are few and far between, it is recommended you also
        // explicitly depend on RxJava latest version for bug fixes and new features.
        compile 'io.reactivex:rxjava:1.1.6'


        //--- For Testing ---
        //robolectric:
        testCompile "org.robolectric:robolectric:3.2.2"

        //mockito
        testCompile "org.mockito:mockito-core:2.+"
        testCompile('org.hamcrest:hamcrest-core:1.3')
        testCompile('org.hamcrest:hamcrest-library:1.3')

        testCompile 'junit:junit:4.12'

        androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
            exclude group: 'com.android.support', module: 'support-annotations'
        })

        // Espresso-web for WebView support
        androidTestCompile( 'com.android.support.test.espresso:espresso-web:2.2.2', {
            exclude group: 'com.android.support', module: 'support-annotations'
        })

        androidTestCompile( 'com.android.support.test:runner:0.5', {
            exclude group: 'com.android.support', module: 'support-annotations'
        })
        androidTestCompile( 'com.android.support.test:rules:0.5', {
            exclude group: 'com.android.support', module: 'support-annotations'
        })

        testCompile ('org.powermock:powermock-api-mockito:1.6.2') {
            exclude module: 'hamcrest-core'
            exclude module: 'objenesis'
        }

        //mockwebserver
        //testCompile 'com.squareup.okhttp3:mockwebserver:3.3.0'
        androidTestCompile ('com.squareup.okhttp:mockwebserver:2.7.0')
        androidTestCompile 'com.squareup.spoon:spoon-client:1.2.0'
+4
source share
4

Retrofit version 2.3.0 -> com.squareup.retrofit2:retrofit:2.3.0

MockWebServer version 3.8.0 -> com.squareup.okhttp3:mockwebserver:3.8.0
+2

okio androidTestCompile

androidTestCompile ('com.squareup.okhttp:mockwebserver:2.7.0') {
    exclude module: 'com.squareup.okio'
}
0

Retrofit MockWebServer :

com.squareup.retrofit2:retrofit:2.2.0 
com.squareup.okhttp3:mockwebserver:3.6.0   

, , .

0

- APK APK . Gradle , APK APK (, Guava), . Gradle , - ( ).

ref - https://sites.google.com/a/android.com/tools/tech-docs/new-build-system/user-guide#TOC-Resolving-conflicts-between-main-and-test-APK

, i.e compile, androidTestCompile testCompile .

(retrofit mockwebserver), (okhttp okio) .

(compile, androidTestCompile testCompile), .

androidTestCompile('com.squareup.okio:okio:1.6.0') .
androidTest, okio, .

Note
Whenever there are version conflicts in the same configuration, the latest available version of the dependency is automatically used. This does not apply to version conflicts in configurations, so an error.

example - here in my compilation configuration, okhttp3dependencies are replaced with the latest version 3.9.0whenever a conflict occurs.

enter image description here

0
source

Source: https://habr.com/ru/post/1669660/


All Articles