Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 应用程序(22.0.0)和测试应用程序(21.0.3)的解析版本不同_Android_Android Support Library - Fatal编程技术网

Android 应用程序(22.0.0)和测试应用程序(21.0.3)的解析版本不同

Android 应用程序(22.0.0)和测试应用程序(21.0.3)的解析版本不同,android,android-support-library,Android,Android Support Library,升级到API 22和support lib revision 22后,我收到以下警告: 警告:与依赖项冲突 'com.android.support:支持注释'。已解析应用程序的版本 (22.0.0)和测试应用程序(21.0.3)有所不同 Gradle本身更为宽容,但Android Studio则不然 我没有使用21.0.3声明依赖项。。。是否有一个依赖库使用了21.0.3,而Google忘记了用批处理的其余部分更新它 我的build.gradle,去掉了多余部分 android { com

升级到API 22和support lib revision 22后,我收到以下警告:

警告:与依赖项冲突 'com.android.support:支持注释'。已解析应用程序的版本 (22.0.0)和测试应用程序(21.0.3)有所不同

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'
  }
更新:(谢谢标记)

看起来是浓缩咖啡

+--- 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 (*)
处理这类事情的第一步是熟悉命令行Gradle

第2步是运行(例如,从项目根目录运行
gradle-qapp:dependentials
)。这将提供如问题更新中所示的ASCII树,它将帮助您确定冲突工件版本的要求

第三步是决定需要更换什么。您选择仅替换冲突(
支持注释
)。就我个人而言,我会选择错误版本树的根(
recyclerview-v7
),尽管据我所知,在这种情况下,这可能不是最好的做法

步骤4是添加
exclude
指令,以阻止在步骤3中选择的内容:

第五步是测试这一变化的效果。您所做的是说,
espresso contrib
必须处理22.0.0版的
支持注释
。这可能行得通。那可能不是。这取决于冲突的向后兼容性。在这种情况下,
支持注释
应该很好


第6步是饮用您选择的饮料,一种适合您所在地区和时间的饮料。

事实上,这是新版本Espresso Contrib的一个缺陷,您可以参考以下解决方法:


为了解决这个问题,我在build.gradle脚本中添加了下面这行代码

androidTestCompile 'com.android.support:support-annotations:xx.x.x'
用应用程序正在使用的任何版本的支持注释替换
xx.x.x
——这将显示在您的依赖项中,或者如果同步出现问题,Gradle sync消息将显示为:
应用程序(xx.x.x)的已解决版本

请参阅

这解决了我的问题


或者,您可以在windows上运行gradlew和./gradlew for mac/linux这将在需要时下载您的依赖项

您可以在windows上运行gradlew和./gradlew for mac/linux这将在需要时下载您的依赖项

您可以检查其中一个库是否依赖于支持注释,或者任何名称有误的库,并尝试在gradle中将其排除,如下所示

编译(“org.apache.maven:maven ant tasks:${mavenantaskver}”‌​") { 排除组:“junit” }

错误:与依赖项“junit:junit”冲突。应用程序(3.8.1)和测试应用程序(4.12)的解析版本不同。有关详细信息,请参阅g.co/androidstudio/app-test-app-Conflict


这就是我遇到的错误,因此我使用gradle line上方的代码来解决这个问题。我还遇到了这个问题以及与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材质设计相关的设计依赖项

希望对sdkversion 25有所帮助=)

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

如前所述,这是插装测试中的常见问题,只需在build.gradle中添加androidTestCompile的依赖项即可解决。在我的例子中,冲突出现在appcompat、recyclerview和design依赖项中。并通过添加以下行来解决

    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'

Gradle
dependencies
任务可能会帮助您识别罪魁祸首:谢谢Mark。看起来原因是
espresso contrib
。您可以尝试
排除
来阻止21.0.3版的
recyclerview-v7
,自己拉上22.0.0版,并祈祷它们与充分兼容e> espresso contrib
的需求。就个人而言,我很惊讶你能用这么长的依赖项列表保持理智…:-)是的。这就成功了。如果你把它作为答案,我会给你答案:)androidTestCompile('com.android.support.test.espresso:espresso contrib:2.0'){exclude module:'support annotations'}我的问题也通过简单的android studio重启解决了:)我使用了
exclude组:'com.android.support',module:'support annotations'
,因为您的版本引发了“无法推断参数类型”"GraceWorks警告……也考虑将此应用于COM.Android。Save:Roo.Android。支持:测试:规则:0.3和COM。Android。支持。测试:意大利浓咖啡:意大利浓咖啡核心:2.2步骤4,在哪里添加ANDROIDTEST编译指令?如果我尝试将该语法添加到我的应用程序的依赖块,我会得到一些语法错误。s现在已经编写好了,很难准确地告诉您在哪里添加它。@OYRM:“您在哪里添加androidTestCompile指令?”--在
依赖项中
。参见Chiu Ki Chan。步骤#6是这里的关键哇。我这样做是为了升级
Junit
,但完全是为了got,我也可以为其他依赖项这样做。这确实是Google示例的方式,一条注释写道“强制在测试应用程序中使用支持注释,因为它是由runner模块内部使用的。”。这对我来说是最好的答案。注意:必须更新到'23.1.1':
androidTestCompile'com.android。支持:支持注释:23.1.1'
谢谢,在我的情况下,行是
     androidTestCompile 'com.android.support:support-annotations:25.2.0'
    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'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'