文章最早发布于我的微信公众号 Android_De_Home 中,欢迎大家扫描下面二维码关注微信公众获取更多知识内容。
本文为sydMobile原创文章,可以随意转载,但请务必注明出处!
complileSDKVersion 就是表示:编译版本,所谓的编译版本就是我们在开发apk的时候,我需要的类,比如Activity等等要依赖的编译包。我们调用的API都有对应的版本号。
buildToolsVersion 表示构建工具的版本,里面包含很多的打包工具比如:aapt、aidl、dexdump等等
你可以使用一个高版本的构建工具(build-tool)去构建一个使用complile低版本的工程,也就是说 compilesdk的版本可以比buildtools版本低。
minSdkVersion:就是你的apk支持的最低版本,也就是应用程序兼容的最低版本,也就是说你的apk要在这个版本以上运行才可以
targetsdkVersion :声明您已经在这版本上优化了应用程序的最高版本,通俗来说就是,这个版本是你的应用程序适配的最高的一个版本。但是在Android中高系统是向下兼容的,所以就算你的targetsdkversion是20,如果你在版本号是23的手机上运行你的应用程序也是可以的,那么有人会说了那这个还有什么用啊,作用就是 如果你的targetsdkversion的版本如果是20的话,手机是会默认以兼容的方式在运行的。如果21的系统上有些API做出了改变,那么是不会提醒的。比如,在Android4.4中有行为变更,那就是使用AlarmManager API创建的警报默认情况下是不准确的,因此系统会批量应用程序警报并保留系统电源,但是如果你的targetsdkversion低于4.4的话就没有这种行为改变了。
补充
上面介绍的基础,都是在正宗的 Android 系统上面的体现!所谓正宗的 Android 系统值得是 Google 的原生系统,在国内由于某些特殊原因我们是使用不到正宗的 Android 系统的,小米、华为等等的这些手机系统都是在原生 Android 系统的基础上定制的,所以在实际中的代码体现会和上面情况有所不同,会根据定制的系统不同而有变化。
举个例子
比如:我们都知道 Android 6.0 的行为变更是增加了「动态请求权限」这里简单说一下,Android 6.0 以前(没有特殊说明的话,这里指的 Android 原生系统),所有权限是在安装 APP 的时候就授权了。在 Android 6.0 以后,有一些可能会对用户隐私造成泄漏的权限是需要在代码中动态请求的。也就是说,如果你要使用读写内存卡的权限,在 Android 6.0 之前的话,直接在 AndroidManifest 里面注册就行了。如果在你的代码里面将 targetSDKversion 设置为 22 的话,那么权限的行为改变就不会被应用,也就是说你不需要在 app 代码中动态申请权限。然而这仅仅是针对正宗的 Android 系统。如果你这些设置了,在小米手机中需要读写权限,而你没有动态申请权限是有可能会出问题的!
关注微信公众号,及时获取内容更新