Android studio编译问题总结(一)
前言
使用Android studio进行工程构建,先来了解下基础知识。
- CompileSdkVersion是SDK的版本号,例如API-19、API-20、API-21等等。
- buildeToolVersion是构建工具的版本,其中包括了打包工具aapt、dx等等。这个工具的目录位于sdk/build-tools/XX.XX.XX
- CompileSdkVersion和buildeToolVersion关系是:buildeToolVersion版本号一般是API-LEVEL的版本号。 例如API20对应的build-tool的版本就是20.0.0。
- 高版本buildeToolVersion可以构建低版本的CompileSdkVersion,但低版本buildeToolVersion的不能构建高版本的CompileSdkVersion
- 每一个Gradle插件版本都对应一个build工具版本,不能混用。如gradle 3.0.1的build工具最低要求是26.0.2,如果在工程的build.gradle中未指定,则会默认使用gradle对应的最低build版本来构建
常见问题一:Failed to find Build Tools revision 26.0.2
详细错误如下:
Error:A problem occurred configuring project ':app'.
> Failed to find Build Tools revision 26.0.2
当使用as编译时候出现该问题,提示无法找到编译tools的版本号,此时需要怎么解决呢?
解决办法:
1.查看sdk目录Android\Sdk\build-tools下是否存在26.0.2版本。报错时候截图如下:
2.如果发现该版本的build-tools不存在,此时可以修改编译工具版本号。方法如下:
(1)修改编译工具版本为sdk路径下存在的版本
工程下app/build.gradle的编译工具版本号:
android {
compileSdkVersion 28
buildToolsVersion "28.0.0" ##一些工具自动生成的编译脚本可能无此行,此时会用默认as版本对应的最低版本的tools,如当前使用的是As 版本是3.0.1,此时需要最低版本为26.0.2。此时需要指定版本号,增加该行,改为26.0.2或者sdk目录下存在的版本号28.0.0(必须大于as版本要求的版本)
defaultConfig {
applicationId "com.example.demo.myapplication"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
(2)下载对应缺少版本的build-tools,放到Android\Sdk\build-tools下
常见问题二:Failed to find target with hash string ‘android-21’ in:
具体出现信息如下:
Error:A problem occurred configuring project ':app'.
> Failed to find target with hash string 'android-21' in: C:\Users\skycnlr\AppData\Local\Android\Sdk
解决办法:
1.修改编译工具版本为sdk路径platform下存在的api版本号
2.设置中下载对应的api版本
常见问题三:ARouter::Compiler >>> No module name, for more information, look at gradle log.
解决办法:
Error:Execution failed for task ‘:app:compileDebugJavaWithJavac’.
java.lang.RuntimeException: ARouter::Compiler >>> No module name, for more information, look at gradle log.
在build.gradle中增加javaCompileOptions配置,如下斜体所示:
android {
compileSdkVersion 28
buildToolsVersion "28.0.0"
defaultConfig {
applicationId "com.example.demo.myapplication"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
*javaCompileOptions {
annotationProcessorOptions {
arguments = [moduleName: project.getName()]
}*
}
}