我是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'com.android.support:support-annotations:23.3.0' 这没有成功。我也试过27.1.1和26.1.0 .. 这也没有成功。
答案 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
对于compile
和implementation
之间的差异,请看一下
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'
}
}
下面还有截图,以便更好地理解。
只有当你希望目标sdk为26时,configurations.all块才会有用。如果你可以将它改为27,那么错误就会消失,而不会在app.gradle文件中添加配置块。
还有一种方法,如果您从app.gradle文件中删除所有测试实现,它将解决错误,在此,您也不需要添加配置块,也不需要更改targetsdk版本。
希望有所帮助。
答案 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(模块应用程序):
关注图片并更改版本:
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
(应用):
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'
答案 9 :(得分:1)
在build.gradle(Module:app)中我有同样的问题 在依赖项中添加以下代码行:
dependencies
{
...
compile 'com.android.support:support-annotations:27.1.1'
}
它非常适合我
答案 10 :(得分:1)
// 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'
}
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
,请在开发时忽略它们。
我在项目中更新了以下所有内容,并且不再遇到这些错误。
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 祝您编程愉快! :)
答案 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
安装以下库答案 14 :(得分:0)
在gradle文件中的依赖项下添加此行
compile 'com.android.support:support-annotations:27.1.1'