+ 我要发布
我发布的 我的标签 发现
浏览器扩展
斑点象@Edge

Android build.gradle 中的 compileSdkVersion、buildToolsVersion、minSdkVersion、targetSdkVersion

使用 Android Studio 开发时,在 build.gradle 中会用到 compileSdkVersion、buildToolsVersion、minSdkVersion、targetSdkVersion,它们是什么意思呢? 1、CompileSdkVersion是你SDK的版本号,也就是API Level,指定了Gradle编译你的App时使用的Android API版本。 2、buildeToolVersion是你构建工具的版本,其中包括了打包工具aapt、dx等等。这个工具的目录位于sdk_path/build-tools/XX.XX.XX,指定了Gradle在编译App时使用的SDK build tools、命令行、程序、编译器等的版本。 3、minSdkVersion与maxSdkVersion比较容易理解,就是在安装程序的时候,如果目标设备的API版本小于minSdkVersion,或者大于maxSdkVersion,程序将无法安装。一般来说没有必要设置maxSdkVersion。 4、targetSdkVersion相对复杂一些,如果设置了此属性,那么在程序执行时,如果目标设备的API版本正好等于此数值,他会告诉Android平台:此程序在此版本已经经过充分测,没有问题。不必为此程序开启兼容性检查判断的工作了。也就是说,如果targetSdkVersion与目标设备的API版本相同时,运行效率可能会高一些。 但是,这个设置仅仅是一个声明、一个通知,不会有太实质的作用,比如说,使用了targetSdkVersion这个SDK版本中的一个特性,但是这个特性在低版本中是不支持的,那么在低版本的API设备上运行程序时,可能会报错:java.lang.VerifyError。也就是说,此属性不会帮你解决兼容性的测试问题。 如果没有设置,则默认值为minSdkVersion。当你设置了targetSdkVersion的时候,表示你已经充分测试过了你的App在该目标版本的运行情况,系统不应该启用任何兼容性行为来保持你的App与目标版本的向前兼容性。 如果系统的API级别高于应用的目标版本,则系统会启用兼容性行为来确保应用在更高版本系统上的运行。这一点相信做Android开发时间比较久的人都很理解了,只要你写的程序比较规矩,没有太多的官方推荐外的行为,那么一个老版本的应用放在几年后的Android新设备上依然能顺利运行,只不过相当多的开发者(尤其是国内的)并不是很遵守规范罢了。
我的笔记