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

Posted

技术标签:

【中文标题】与项目“:app”中的依赖项“com.android.support:support-annotations”冲突。应用程序 (26.1.0) 和测试应用程序 (27.1.1) 的已解决版本不同。【英文标题】:Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (26.1.0) and test app (27.1.1) differ. 【发布时间】:2018-10-11 13:25:00 【问题描述】:

我是 android 应用开发新手。当我尝试创建一个新项目时,Android Project...弹出以下消息..

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

与项目 ':app' 中的依赖项 'com.android.support:support-annotations' 冲突。应用程序 (26.1.0) 和测试应用程序 (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 'com.android.support:support-annotations:23.3.0' 这没有成功。我也试过 27.1.1 和 26.1.0 .. 也没有成功。

【问题讨论】:

检查这个问题:***.com/q/43817004/9611523。希望它会有所帮助。 更新 Android Studio(以及之后的模拟器和其他一些东西)为我解决了这个问题。 问题是由于注释 gradle 在 Android Studio 新项目创建中默认没有出现。可能对您有帮助:readyandroid.wordpress.com/… 【参考方案1】:

根据您的屏幕截图,我找到了两个可行的解决方案:

第一个解决方案:将这一行添加到 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"

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

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

【讨论】:

我建议使用“实现”而不是编译【参考方案2】:

这是由于版本冲突,要解决它,只需强制更新您的 support-annotations 版本,在您的模块中添加这一行: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 前缀。

【讨论】:

感谢desgraci上述解决方案对我的帮助 现在添加此行后我收到错误“错误:任务':app:processDebugManifest'的执行失败。>清单合并失败并出现多个错误,请参阅日志”请帮助我如何解决它 @Basant 我需要看看是哪个问题,因为这是执行你的 gradle 的问题,最好为此打开一个问题 抱歉@desgraci 回复晚了,我通过升级 IDE 解决了这个问题 @Basant 很高兴听到这个消息!【参考方案3】:

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

【讨论】:

【参考方案4】:

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

    转到android 标签并将compileSdkVersion 26 更改为compileSdkVersion 27 转到defaultConfig标签并将targetSdkVersion 26更改为targetSdkVersion 27 得到dependencies标签并将implementation 'com.android.support:appcompat-v7:26.1.0'更改为implementation 'com.android.support:appcompat-v7:27.1.1'

【讨论】:

【参考方案5】:

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

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

下面还有截图方便大家理解。

    仅当您希望目标 sdk 为 26 时,configurations.all 块才会有帮助。如果您可以将其更改为 27,则无需在 app.gradle 文件中添加配置块,错误就会消失。

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

希望对您有所帮助。

【讨论】:

谢谢,节省我的时间 @ManikandanK 乐于助人! 感谢您提供完整的指示! (关于这类主题的很多答案就像“添加这个:”force 'com.android.support:support-annotations:26.1.0'”几乎没有/没有上下文!(可悲的是,但我还是一样构建错误,在我的情况下 “找不到 com.android.support:support-annotations:27.0.0。需要:trainingiq:bugsnag-react-native:unspecified > com.bugsnag:bugsnag-android:4.3。 1"【参考方案6】:

别担心,很简单:

转到“项目”目录结构,在其中转到“Gradle Scripts”,在其中转到“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】:

如果更改目标 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'

【讨论】:

【参考方案8】:

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

dependencies 

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

它非常适合我

【讨论】:

【参考方案9】:

转到您项目中的 build.gradle(Module App):

按照图片更改这些版本:

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'

希望你能解决你的错误。

【讨论】:

【参考方案10】:

如果您使用 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'

【讨论】:

谢谢哥们。很多爱【参考方案11】:

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,问题就解决了。

在您的情况下,从 Preferences > Android SDKTools > Android > SDK Manager

安装以下库

【讨论】:

【参考方案12】:

如果你使用版本 26 那么内部依赖版本应该是 1.0.13.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.23.0.2 即如下

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

【讨论】:

上帝保佑你,愿 android 支持库版本控制在地狱中腐烂! 所以 Android Studio 向导从头开始创建一个项目并出现错误? ¬¬ 28呢?【参考方案13】:

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,开发时忽略它们。

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

更新Android Studio(跟踪release) 项目级别build.gradle - classpath 'com.android.tools.build:gradle:3.2.0' (Track android.build.gradle release & this) 已更新buildToolVersion(跟踪buildToolVersion release) 有最新的compileSdkVersiontargetSdkVersion Track platform release 已经更新了库版本,因为经过以上更新,它是必要的。 (@见How to update)

编码愉快! :)

【讨论】:

【参考方案14】:

在你的 gradle 文件的依赖项下添加这一行

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

【讨论】:

【参考方案15】:

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

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

【讨论】:

以上是关于与项目“:app”中的依赖项“com.android.support:support-annotations”冲突。应用程序 (26.1.0) 和测试应用程序 (27.1.1) 的已解决版本不同。的主要内容,如果未能解决你的问题,请参考以下文章

如何在同一个 monorepo 中的 Python 项目之间共享开发依赖项?

使用与Android库提供的/ compileOnly依赖项

使用 Dagger 2 管理大型多库模块项目中的依赖项

CMake - 同一项目中的应用程序/库之间的依赖项(标头)

是否有 gradle 依赖项的选项来仅显示库列表

如何组织多包颤振项目并将其用作依赖项