目录
- 报错特征
- 当前环境
- 解决
- 对比分析法
刚安装好Android studio2.2.3,构建了一个hello wordl项目做逆向时,报错了。将报错信息搜索百度、google发现网上各家之言均不同,而且相差之大...感觉这个问题不简单,网上说的都不一定适合自己的环境,尝试他们的说法不一定能弄好,还容易被带偏。现在任务在身,时间紧,先记录着,有空去翻阅官方文档才是正道。我觉得,要快速解决这个问题就采用我最熟悉的对比法,就是通过用正确和错误的案例进行对比分析,那个环节有问题一眼就看出。
报错特征
failed to resolve:com.android.support.appcompat-v7:28+ 报错
Gradle Build
Error:A problem occurred configuring project ':app'.
> Could not resolve all dependencies for configuration ':app:_debugApkCopy'.
> Could not find any matches for com.android.support:appcompat-v7:28.+ as no versions of com.android.support:appcompat-v7 are available.
Required by:
TestAndriod223:app:unspecified
Gradle Sync
Error:Failed to resolve: com.android.support.test.espresso:espresso-core:2.0
Install Repository and sync project
Show in Project Structure dialog
Error:Failed to resolve: com.android.support:appcompat-v7:28.+
Install Repository and sync project
Show in Project Structure dialog
当前环境
Android Studio
Android Studio 2.2.3
Build #AI-145.3537739, built on December 2, 2016
JRE: 1.8.0_76-release-b03 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Gradle
gradlew -v
------------------------------------------------------------
Gradle 2.14.1
------------------------------------------------------------
Build、Compile工具
compileSdkVersion 28
buildToolsVersion "19.1.0"
SDK
Android SDK Tools 26.1.1
Android SDK Platform-tools 28.0.1
Android SDK Build-tools 28.0.3
compile 'com.android.support:appcompat-v7:28.+
解决
我感觉是SDK的问题,一怒之下,把之前的SDK 给删干干净净。(这个SDK是之前安装新版Studio留下的,后来证明这个思路是正确的)
在网上找一个 Android SDK Tools 25.2.2的安装包(旧版本),解压使用。
升级了一下SDK Tool。
Android SDK Manager. Revision 25.2.5
安装如下组件:
Android SDK Tools 25.2.5
Android SDK Platform-tools 28.0.1
Android SDK Build-tools 28.0.3
Android 4.1.2 (API 16)(全部组件)
Android Support Repository 47
Google Repository 58
Google USB Driver 11
最后成功解决这个问题。
对比分析法
再次记录下运行成功的环境,与之前报错的环境对比,相异的就是出问题的地方:
创建时选择Android API 16一致;
Android Studio版本一致;
Gradle 一致;
Build、Compile工具:
compileSdkVersion 24
buildToolsVersion "28.0.3"
compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
总结:
发现SDK工具、API等一些版本都差不多,唯一不同的就是项目根目录下 /build.gradle
配置文件不同。
我们先看看build.gradle 配置里面都配置些什么:
android {
compileSdkVersion 24
buildToolsVersion "28.0.3"
defaultConfig {
applicationId "com.example.lijie01.testandroid223v1"
minSdkVersion 16
targetSdkVersion 19
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
重点看下面4个参数:
compileSdkVersion 24 --- 指用Android 7.0 (API 24)编译
buildToolsVersion "28.0.3" --- 指用Android SDK Build-tools 28.0.3版本构建
minSdkVersion 16 --- 指最小能用Android 4.2.2(API 16)编译
targetSdkVersion 19 --- 指兼容到 Android 4.4.2 (API 19)版本 (但是你照样能安装到19以上的机器,只是不能支持新的特性)
从新打开旧的(之前报错V7)Android的项目,发现之前配置错了SDK、buildToolsVersion,因为对应的都没有下载,下载之后即可解决。
解决 failed to resolve:com.android.support.appcompat-v7:28+
报错。