与项目':app'中的依赖'com.android.support:support-annotations'冲突。 app(26.1.0)和测试应用(27.1.1)的已解决版本不同。

时间:2018-05-01 13:45:19

标签: android

我是Android App Development的新手。当我尝试创建一个新项目时,Android Project ...弹出以下消息..

错误:任务':app:preDebugAndroidTestBuild'执行失败。

  

与项目':app'中的依赖'com.android.support:support-annotations'冲突。 app(26.1.0)和测试app(27.1.1)的已解决版本有所不同。有关详细信息,请参阅https://d.android.com/r/tools/test-apk-dependency-conflicts.html。   信息:Gradle任务[:app:generateDebugSources,:app:generateDebugAndroidTestSources,:app:mockableAndroidJar]

这是我项目的截图 click here to see screenshot of the error i got

我也尝试将此代码添加到我的依赖项中.. androidTestCompile'c​​om.android.support:support-annotations:23.3.0' 这没有成功。我也试过27.1.1和26.1.0 .. 这也没有成功。

15 个答案:

答案 0 :(得分:166)

根据您的截图,我找到了两个有效的解决方案:

第一个解决方案:在此行添加gradle模块的依赖项

compile 'com.android.support:support-annotations:27.1.1'

并同步您的项目

注意:如果您使用的是Android Studio 3+,请将compile更改为implementation

第二个解决方案:配置文档https://developer.android.com/studio/build/gradle-tips.html#configure-project-wide-properties中找到的项目范围的属性

项目gradle中的

添加以下行:

// This block encapsulates custom properties and makes them available to all
// modules in the project.
ext {
    // The following are only a few examples of the types of properties you can define.
    compileSdkVersion = 26
    // You can also use this to specify versions for dependencies. Having consistent
    // versions between modules can avoid behavior conflicts.
    supportLibVersion = "27.1.1"
}

然后,要访问此部分,请将compileSdkVersion行更改为

compileSdkVersion rootProject.ext.compileSdkVersion

并在dependencies部分将导入的库更改为:

compile "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"

并同步您的项目

注意:如果您使用的是Android Studio 3+,请将compile更改为implementation

对于compileimplementation之间的差异,请看一下 What's the difference between implementation and compile in gradle

答案 1 :(得分:46)

在依赖项阻止之前,在app.gradle文件中添加以下行。

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

下面还有截图,以便更好地理解。

Configurations.all block

  1. 只有当你希望目标sdk为26时,configurations.all块才会有用。如果你可以将它改为27,那么错误就会消失,而不会在app.gradle文件中添加配置块。

  2. 还有一种方法,如果您从app.gradle文件中删除所有测试实现,它将解决错误,在此,您也不需要添加配置块,也不需要更改targetsdk版本。

  3. 希望有所帮助。

答案 2 :(得分:30)

如果使用版本 26 ,则内部依赖项版本应为 1.0.1 3.0.1 ,即,如下所示

  androidTestImplementation 'com.android.support.test:runner:1.0.1'
  androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

如果使用版本 27 ,则内部依赖项版本应为 1.0.2 3.0.2 ,即,如下所示

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

答案 3 :(得分:25)

如果您使用的是Android Studio 3.1。+或更高版本

只需将其放入您的gradle行为中即可:

implementation 'com.android.support:support-annotations:27.1.1'

总体如下:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    implementation 'com.android.support:support-annotations:27.1.1'
}

答案 4 :(得分:22)

这是由于版本冲突,解决它,只是强制更新您的支持 - 注释版本,在您的模块上添加此行:app gradle

implementation ('com.android.support:support-annotations:27.1.1')

希望这能解决你的问题;)

修改

几乎忘了,你可以为版本声明一个额外的属性(https://docs.gradle.org/current/userguide/writing_build_scripts.html#sec:extra_properties),转到你的项目(或你的顶层)gradle文件,并声明你的支持,或者只是为了这个例子,注释版本var

ext.annotation_version = "27.1.1"

然后在你的模块gradle中将其替换为:

implementation ("com.android.support:support-annotations:$annotation_version")

这与@emadabel解决方案非常相似,这是一个很好的替代方案,但没有阻止或rootproject前缀。

答案 5 :(得分:9)

将此添加到build.gradle(模块应用程序)对我有用:
compile' com.android.support:support-annotations:27.1.1'

答案 6 :(得分:5)

别担心,这很简单:

转到“项目”目录结构,然后转到“ Gradle脚本”,在其内部转到“ build.gradle(Module:app)”,然后双击它。

现在- 向下滚动程序,然后转到依赖项部分: 像下面一样


依赖性{

implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

}


现在在此操作中删除最后两行代码并重建应用程序,现在它可以正常工作

依赖关系应为:


依赖性{

implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'

}


重新构建了应用程序并成功运行了!

答案 7 :(得分:3)

转到项目中的build.gradle(模块应用程序):

enter image description here

关注图片并更改版本:

compileSdkVersion: 27
targetSdkVersion: 27

,如果是android studio版本2: 更改此行:

compile 'com.android.support:appcompat-v7:27.1.1'

其他 更改此行:

implementation 'com.android.support:appcompat-v7:27.1.1'

希望您会解决您的错误。

答案 8 :(得分:1)

解决此问题的另一种简单方法是编辑build.gradle(应用):

  1. 转到android代码并将compileSdkVersion 26更改为compileSdkVersion 27
  2. 转到defaultConfig代码并将targetSdkVersion 26更改为targetSdkVersion 27
  3. 获得dependencies代码并将implementation 'com.android.support:appcompat-v7:26.1.0'更改为implementation 'com.android.support:appcompat-v7:27.1.1'

答案 9 :(得分:1)

在build.gradle(Module:app)中我有同样的问题 在依赖项中添加以下代码行:

dependencies 
{
   ...
   compile 'com.android.support:support-annotations:27.1.1'
}

它非常适合我

答案 10 :(得分:1)

Important Update

转到项目级别build.gradle,定义全局变量

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlinVersion = '1.2.61'

    ext.global_minSdkVersion = 16
    ext.global_targetSdkVersion = 28
    ext.global_buildToolsVersion = '28.0.1'
    ext.global_supportLibVersion = '27.1.1'
}

转到应用程序级别的build.gradle,并使用全局变量

app build.gradle

android {
    compileSdkVersion global_targetSdkVersion
    buildToolsVersion global_buildToolsVersion
    defaultConfig {
        minSdkVersion global_minSdkVersion
        targetSdkVersion global_targetSdkVersion
}
...

dependencies {
    implementation "com.android.support:appcompat-v7:$global_supportLibVersion"
    implementation "com.android.support:recyclerview-v7:$global_supportLibVersion"
    // and so on...
}

一些库build.gradle

android {
    compileSdkVersion global_targetSdkVersion
    buildToolsVersion global_buildToolsVersion
    defaultConfig {
        minSdkVersion global_minSdkVersion
        targetSdkVersion global_targetSdkVersion
}
...

dependencies {
    implementation "com.android.support:appcompat-v7:$global_supportLibVersion"
    implementation "com.android.support:recyclerview-v7:$global_supportLibVersion"
    // and so on...
}

解决方案是使您的版本与所有模块中的版本相同。这样您就不会有冲突。

重要提示

  

当我更新了所有内容(gradle,sdks,   库等。那么我面临的错误就更少了。因为开发人员正在工作   很难在Android Studio上轻松开发。

始终具有最新但稳定的版本不稳定版本为alphabetarc,请在开发时忽略它们。

我在项目中更新了以下所有内容,并且不再遇到这些错误。

祝您编程愉快! :)

答案 11 :(得分:1)

将此添加到您的gradle文件中。

implementation 'com.android.support:support-annotations:27.1.1'

答案 12 :(得分:0)

如果更改目标sdk版本无济于事,那么如果您对版本3.0.2有依赖性,则将其更改为3.0.1

例如更改

androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2'

androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.1'

答案 13 :(得分:0)

the official explanation中介绍了一种更好的解决方案。我把我以前给出的答案留在水平线以下。

根据那里的解决方案:

使用外部标记,并在顶级 build.gradle 文件中写下以下代码。您需要将版本更改为变量而不是静态版本号。

ext {
    compileSdkVersion = 26
    supportLibVersion = "27.1.1"
}

更改应用级 build.gradle 文件中的静态版本号,该文件附近有(Module: app)

android {
    compileSdkVersion rootProject.ext.compileSdkVersion // It was 26 for example
    // the below lines will stay
}

// here there are some other stuff maybe

dependencies {
    implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
    // the below lines will stay
}

同步项目,不会有任何错误。


您无需向Gradle脚本添加任何内容。安装必要的SDK,即可解决问题。

根据您的情况,请从首选项> Android SDK 工具> Android> SDK Manager

安装以下库

enter image description here

答案 14 :(得分:0)

在gradle文件中的依赖项下添加此行

compile 'com.android.support:support-annotations:27.1.1'