与项目“: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"
然后要访问此部分,请将compileSdkVersion
line 更改为
compileSdkVersion rootProject.ext.compileSdkVersion
在dependencies
部分将导入的库更改为:
compile "com.android.support:appcompat-v7:$rootProject.ext.supportLibVersion"
并同步您的项目
注意:如果您使用的是 Android Studio 3+,请将 compile
更改为 implementation
compile
和 implementation
之间的区别看这里
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 SDK 或 Tools > Android > SDK Manager
安装以下库【讨论】:
【参考方案12】:如果你使用版本 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'
【讨论】:
上帝保佑你,愿 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 上轻松开发。
总是有最新但稳定的版本 不稳定的版本有alpha
、beta
和rc
,开发时忽略它们。
我已在我的项目中更新了以下所有内容,并且不再面临这些错误。
更新Android Studio(跟踪release) 项目级别build.gradle
- classpath 'com.android.tools.build:gradle:3.2.0'
(Track android.build.gradle
release & this)
已更新buildToolVersion
(跟踪buildToolVersion release)
有最新的compileSdkVersion
和targetSdkVersion
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依赖项