参考:https://www.jianshu.com/p/358a3d42196e
我们在使用AS编译app时,需要设置一些参数,其中包括compileSdkVersion、minSdkVersion、targetSdkVersion,如下:
android {
compileSdkVersion 23
buildToolsVersion “23.0.1”
defaultConfig {
applicationId “com.example.ssy"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName “1.0”
}
}
1. minSdkVersion
能运行我们app的安卓OS版本下限
例如,如果minSdkVersion设置为16,那么只有 Android 4.1以及以上的设备才能运行我们的app;低于Android 4.1的操作系统无法运行我们的app。
这通常是应用商店 判断这个app是否能运行本设备上的依据之一。
当我们引用了第三方库,例如几个库的minSdkVersion分别是API5,API10,API16,那么我们的minSdkVersion最低就是16。
2. compileSdkVersion
告诉Gradle要用哪一版本的Android SDK去编译app
compileSdkVersion 只在编译期间起作用,出现的报错和警告不代表app运行时的表现。比如,虽然有报错和警告,但是我们强制打包,其实也可能是没有问题的。
3. targetSdkVersion
我们的app已经针对这个版本的系统,做了充分的兼容性处理和测试
Android OS基于targetSdkVersion来保证Android OS的向前兼容性(也就是保证 新版本 OS,能正确运行 针对旧版本OS编写的app)
例如,我们设置targetSdkVersion为16,对应Android 4.1。
当我们的app在Android 4.4(对应Android SDK 19)上运行时,OS会判断你的targetSdkVersion是否小于19:
如果小于19,那就按照targetSdkVersion对应的api方法来运行;
如果大于等于19,那么就按照Android SDK 19中的api方法来运行。
这就保证了 新版本 OS,能正确运行 针对旧版本OS编写的app。