1. 程式人生 > >Android studio更新到2.2之後出現的問題

Android studio更新到2.2之後出現的問題

更新完AS之後去寫作業,發現怎麼弄都是沒法執行,提示的錯誤是Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (22.2.1) and test app (23.1.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.

大致意思就是說你測試版本用的庫和最終用的庫版本號不一致

開啟後面給的連結發現真的是什麼都沒說啊!百度了半天沒有找到什麼中文資料,只能看看國外的網站有什麼相關的解決方法。

折騰了好久大概總結出來問題在哪裡了。寫下來幫大家解決這個問題。

首先先定位問題出現在哪裡,build.gradle裡面的dependencies裡面

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha1'
    testCompile 'junit:junit:4.12'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
    androidTestCompile 'com.android.support.test:runner:0.5'
    androidTestCompile 'com.android.support:support-annotations:23.1.1'
}
一眼瞅過去肯定以為只要把最後一項
com.android.support:support-annotations:23.1.1

後面修改為22.2.1就行了是吧?naive。

我這麼試了發現根本就不行。查了好久才發現並不只是這一句有問題,在google之後http://stackoverflow.com/questions/28999124/resolved-versions-for-app-22-0-0-and-test-app-21-0-3-differ給出了一些解釋。

Looks like it's 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(*)
參考過後就知道了,就是說下面的androidTestCompile專案中,espresso那一項當中還有包含23.1.1的引用,你要是把androidTestCompile那幾條都註釋了再執行就發現編譯通過了。。。

下面有人回答說Actually it's a bug of new update version of Espresso Contrib

好吧,有幸遇到這種存在在環境中的bug了,給出的解決方法簡單粗暴,新增force強制指定annotations

configurations.all {
    resolutionStrategy.force 'com.android.support:support-annotations:22.1.0'}
把這一項新增到dependencies裡面就可以了。再去試一試
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha1'
    testCompile 'junit:junit:4.12'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
    androidTestCompile 'com.android.support.test:runner:0.5'
    androidTestCompile 'com.android.support:support-annotations:22.2.1'
    configurations.all {
        resolutionStrategy.force 'com.android.support:support-annotations:22.1.0'
    }
}
終於build successful