应用程序 (22.0.0) 和测试应用程序 (21.0.3) 的已解决版本不同
Resolved versions for app (22.0.0) and test app (21.0.3) differ
升级到 API 22 并支持 lib 修订版 22 后,我收到以下警告:
Warning:Conflict with dependency
'com.android.support:support-annotations'. Resolved versions for app
(22.0.0) and test app (21.0.3) differ.
Gradle 本身比较宽容,但是 Android Studio,没那么宽容。
我没有使用 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'
}
更新:(感谢马克)
看起来像是 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 (*)
处理此类事情时的第 1 步是熟悉命令行 Gradle。
第 2 步是 运行 the Gradle dependencies report(例如,从项目根目录 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
有 来处理 support-annotations
的 22.0.0 版本。那可能行得通。那可能不会。这取决于冲突的向后兼容性。这样的话,support-annotations
应该还算不错吧。
第 6 步是饮用您选择的饮料,一种适合您的地点和时间的饮料。
其实是新版Espresso Contrib的bug,可以参考这个解决方法:android-testing/build.gradle
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:22.1.0'
}
我解决这个问题的方法是将以下行添加到我的 build.gradle 脚本中
androidTestCompile 'com.android.support:support-annotations:xx.x.x'
将 xx.x.x
替换为您的应用程序正在使用的任何版本的支持注释 - 这将显示在您的依赖项中,或者 Gradle 同步消息中: Resolved version for app (xx.x.x)
应该有同步问题。
configurations.all {
resolutionStrategy {
force 'com.android.support:support-annotations:23.1.1'
}
}
这解决了我的问题。
或者您可以 运行 gradlew on windows 和 ./gradlew for mac/linux 这将在需要时下载您的依赖项
您可以 运行 gradlew on windows 和 ./gradlew for mac/linux 这将在需要时下载您的依赖项。
您可以检查其中一个库是否依赖于支持注释或任何库名称有误,并尝试在 gradle 中排除它,如下所示
编译("org.apache.maven:maven-ant-tasks:${mavenAntTaskVer}"){
排除组:'junit'
}
错误:与依赖项冲突 'junit:junit'。应用程序 (3.8.1) 和测试应用程序 (4.12) 的已解决版本不同。有关详细信息,请参见 g.co/androidstudio/app-test-app-conflict。
这是我遇到的错误,所以我使用上面的 gradle 行来解决问题
我也 运行 遇到这个问题以及涉及 appcompat 的其他冲突,我找到的解决方案是添加测试编译并将它们设置为您当前使用的 sdk使用。在我的例子中它是 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.+'
此外,如您所见,我添加了与Android Material设计相关的设计依赖项。
希望对您有所帮助 =)
对于 sdk 版本 25
androidTestCompile 'com.android.support:support-annotations:25.2.0'
如 here 所述,这是仪器测试中的常见问题,只需在 build.gradle 中添加 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'
我在使用 26.0.0 和 27.1.1 时遇到了同样的问题,实际上只需将前者升级到后者即可使其正常工作。
只需删除 build.gradle 文件中的这些行:
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
升级到 API 22 并支持 lib 修订版 22 后,我收到以下警告:
Warning:Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (22.0.0) and test app (21.0.3) differ.
Gradle 本身比较宽容,但是 Android Studio,没那么宽容。
我没有使用 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'
}
更新:(感谢马克)
看起来像是 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 (*)
处理此类事情时的第 1 步是熟悉命令行 Gradle。
第 2 步是 运行 the Gradle dependencies report(例如,从项目根目录 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
有 来处理 support-annotations
的 22.0.0 版本。那可能行得通。那可能不会。这取决于冲突的向后兼容性。这样的话,support-annotations
应该还算不错吧。
第 6 步是饮用您选择的饮料,一种适合您的地点和时间的饮料。
其实是新版Espresso Contrib的bug,可以参考这个解决方法:android-testing/build.gradle
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:22.1.0'
}
我解决这个问题的方法是将以下行添加到我的 build.gradle 脚本中
androidTestCompile 'com.android.support:support-annotations:xx.x.x'
将 xx.x.x
替换为您的应用程序正在使用的任何版本的支持注释 - 这将显示在您的依赖项中,或者 Gradle 同步消息中: Resolved version for app (xx.x.x)
应该有同步问题。
configurations.all {
resolutionStrategy {
force 'com.android.support:support-annotations:23.1.1'
}
}
这解决了我的问题。
或者您可以 运行 gradlew on windows 和 ./gradlew for mac/linux 这将在需要时下载您的依赖项
您可以 运行 gradlew on windows 和 ./gradlew for mac/linux 这将在需要时下载您的依赖项。
您可以检查其中一个库是否依赖于支持注释或任何库名称有误,并尝试在 gradle 中排除它,如下所示
编译("org.apache.maven:maven-ant-tasks:${mavenAntTaskVer}"){ 排除组:'junit' }
错误:与依赖项冲突 'junit:junit'。应用程序 (3.8.1) 和测试应用程序 (4.12) 的已解决版本不同。有关详细信息,请参见 g.co/androidstudio/app-test-app-conflict。
这是我遇到的错误,所以我使用上面的 gradle 行来解决问题
我也 运行 遇到这个问题以及涉及 appcompat 的其他冲突,我找到的解决方案是添加测试编译并将它们设置为您当前使用的 sdk使用。在我的例子中它是 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.+'
此外,如您所见,我添加了与Android Material设计相关的设计依赖项。
希望对您有所帮助 =)
对于 sdk 版本 25
androidTestCompile 'com.android.support:support-annotations:25.2.0'
如 here 所述,这是仪器测试中的常见问题,只需在 build.gradle 中添加 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'
我在使用 26.0.0 和 27.1.1 时遇到了同样的问题,实际上只需将前者升级到后者即可使其正常工作。
只需删除 build.gradle 文件中的这些行:
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'