compileSdkVersion
compile 是编译的意思,也就是说 compileSdkVersion指的是编译的SDK版本,也就是API-level,eg: api-19,api-21等。不管是run,还是build都要经过一次编译。需要注意的是:当你改变compileSdkVersion并重新sync之后,如果出现一些警告或者错误,错误肯定是要修改的,警告也最好修改下。
出现这些警告或错误的原因大概是API或者写法过时了。还有compileSdkVersion的改变不会影响运行时的行为。
buildToolsVersion
这个是构建工具的版本,其中包括了打包工具aapt、dx.bat、aidl.exe等等。构建工具就是会帮助你新建项目和打包apk等,这个工具的目录位于..your_sdk_path/build-tools/XX.XX.XX,这个版本号一般是API-level.0.0。buildToolsVersion要>=compileSdkVersion; 高版本的build-tools 可以构建低版本编译的android程序。
miniSdkVersion
这个是标识应用程序可运行的最低版本,例如:miniSdkVersion为19( Android4.4),那么API-level在19以下的,也就是低于Android4.4版本的都安装不了。这个通常也是应用市场来判断用户手机能不能安装这个客户端的标准。
targetSdkVersion
targetSdkVersion也就是目标SDK版本,也就是说,当targetSdkVersion是22时,这个客户端在Android5.1上运行是最好最合适的。targetSdkVersion的变化会改变运行行为,比如当前targetSdkVersion是22,那这个客户端在Android6.0上运行时不会出现动态声明权限问题。
这里也说明了一个问题:targetSdkVersion也指定了当前客户端可调用最高等级的API。也就是当targetSdkVersion是22时,客户端只能调用 <=22的API,不能调用 >22的API,这也就是解释了上面那个 动态声明权限问题。
Gradle、Plugin gradle和Gradle Wrapper
Gradle 是一个依赖管理和任务执行的工具,简单来说gradle是一个工程构建工具,java代码,和资源文件需要经过sdk里的一些程序如aapt等处理,才能形成apk包,还有假如你的项目需要哪些第三方库,它帮你把它们都下载下来,并且编译好放到指定的位置,你就直接可以import后用了。gradle就是把那些步骤变得简单化。其配置位置在 gradle/wrapper/gradle-wrapper.properties文件中
distributionUrl就是当前gradle版本。
gradle插件(Plugin gradle) 是就是给gradle和Android studio提供连接的桥梁。其版本配置是在 该项目对应的build.gradle文件中 dependencies中的classpath。
Gradle Wrapper 是为了简化Gradle本身的安装、部署。不同版本的项目可能需要不同版本的Gradle,手工部署的话比较麻烦,而且可能产生冲突,所以需要Gradle Wrapper帮你搞定这些事情。Gradle Wrapper是Gradle项目的一部分。
注意: Gradle 和 Plugin gradle是有对应关系的:
Plugin version Required Gradle version
1.0.0 - 1.1.3 2.2.1 - 2.3
1.2.0 - 1.3.1 2.2.1 - 2.9
1.5.0 2.2.1 - 2.13
2.0.0 - 2.1.2 2.10 - 2.13
2.1.3 - 2.2.3 2.14.1+
2.3.0+ 3.3+
3.0.0+ 4.1+
3.1.0+ 4.4+
有什么不合理或者不对的地方,欢迎下方留言!
本文参考:
认清Android Studio下的Gradle是什么
彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系