今天新建了一个项目,报出以上错误,特此记录。以下为报错内容:
Error: Failed to resolve: com.android.support:appcompat-v7:27.+
Install Repository and sync project
Show in File
Show in Project Structure dialog
一、原因分析:
这其实是编译工具冲突问题,项目所需要的编译工具版本和AS本地的版本不同所致,一般是本地版本低于项目所需版本。
1、我们先了解自己的电脑安装的SDK工具版本,点开SDK Manager图标,然后选中Updates就可以看到了
我的 sdk 工具版本就是24.4.1
2、清楚了自己的sdk 工具版本后,接下来我们继续查看版本,接下来是看sdk 构建工具(sdk Build-Tools)的版本,还是在sdk manager上操作,这次选中 Android SDK后,再在右边选中SDK Tools(只看打勾选项就行)
看了这张图,似乎就能明白些什么了对吧,你会发现,我这里是的 Android SDK Build-Tools (就是我前面一直提到的sdk 构建工具)版本是28,而Android SDK Platform Toors的版本是27,而我的SDK Tools才是24。很明显版本就低了,但这些并不会直接造成项目报错,看完这些数据,我们接着往下看
3.点开项目构建文件Gradle Scripts,再继续点击build.gradle(Module:app)ps:有两个名字相同的,选第二个,看下面代码的注释行就可以了
apply plugin: 'com.android.application'
android {
compileSdkVersion 27 // 使用版本27的SDK编译
buildToolsVersion "27.0.2" // 构建工具版本号为27.0.2,对应上图的SDK Build-Tools27
defaultConfig {
applicationId "com.ph.TestDzy180509"
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
//远程依赖声明,这里我们着重来看appcompat-v7:27.+
compile 'com.android.support:appcompat-v7:27.+'
testCompile 'junit:junit:4.12'
}
二、解决方案
1、此为最简单方法:找到一个老项目,按照这个项目修改版本号就可以了,下面是我自己的
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.xx.xxxx"
minSdkVersion 19
targetSdkVersion 25
versionCode 6
versionName "1.0.6"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
testCompile 'junit:junit:4.12'
}
问题解决,因为当你创建一个新的项目时,有gradle去帮你完成构建项目工作,那它自然是按你的最高sdk构建工具版本去构建项目,所以就会出现这样的问题,
2、这个问题可以通过修改project的gradle,添加maven { url “https://maven.google.com” }即可,如图
allprojects {
repositories {
maven { url "https://maven.google.com" } // 1
jcenter() // 2
maven { url "https://jitpack.io" }
// 1、2顺序不能颠倒,颠倒会报错:Error:Could not find common.jar (android.arch.core:common:1.0.0).
}
}
加入以上代码,编译就可以了。
三、总结:其实,以上两种方案都是治标不治本,并不能从根本上解决问题,都要修改build.gradle文件才行,不能一劳永逸的解决问题。如果有朋友有治本方法,烦请告知。
参考文章: 特此感谢以下文章作者
1、Failed to resolve:com.android.support:appcompat-v7:报错处理 点击打开链接
2、Failed to resolve: com.android.support:appcompat-v7:27.0.1问题解决 点击打开链接