Android中compileSdkVersion、minSdkVersion、targetSdkVersion和buildTools简要说明

#.compileSdkVersion, minSdkVersion 和 targetSdkVersion
1.minSdkVersion:应用兼容的SDK API最低版本,若手机系统低于minSdkVersion将无法安装;
                              AndroidStudio中写代码时调用的API,若在兼容的版本区间中部分版本不存在,则开发者需要做版本判断来做兼容性处理,否则AndroidStudio会提示错误的,没法正常通过编译。
2.compileSdkVersion:选择用来编译的SDK版本,只影响编译过程,完全不影响实际运行过程。
        实际运行中,调用哪个版本的API代码取决于手机的系统版本 以及 targetSdkVersion。
3. targetSdkVersion:表明APP最高支持到哪个系统版本的特性,即使App中调用了更高版本系统新特性相关的API,若不更新targetSdkVersion,在更高版本系统的手机上运行时也不会执行这些API。
    因为App在手机上运行调用API时,Android系统内部有兼容性处理,同一个API, 会根据APP的targetSdkVersion来判断调用哪个版本的API(不同版本的API有可能内部逻辑不同):
            若当前系统版本 <= targetSdkVersion,则调用当前系统版本API;
            若当前系统版本 > targetSdkVersion,则调用低版本targetSdkVersion的API;(Android系统是向前兼容的,高版本兼容低版本)
   若app中调用了只有targetSdkVersion以上版本才有的API, 在高版本系统手机上实际运行时,应该并不会实际调用。
   所以,要想使用新的特性和新的API,就需要更新targetSdkVersion。
4.综上:
4.1 应选择compileSdkVersion>=targetSdkVersion,否则编译用的SDK未必包含targetSdkVersion及以下支持的API,有可能会编译不通过。而且一般版本越高的SDK编译和构建工具,一般也优化的越好,所以compileSdkVersion基本上可以选最新的。
4.2 显然,targetSdkVersion >= minSdkVersion,这是傻子都能看出来的。
#. buildTools Tools Platform-tools
    buildTools Tools Platform-tools 3 个东西其实都是开发工具,即它的版本更新并不会影响运行的 APP ,只是工具上的升级。
    在 build.gradle 中的 buildToolsVersion 版本号是Android构建工具 buildTools API-LEVEL ,这个值 要大于等于 compileSdkVersion,确保不比编译用的SDK版本更旧,因为高版本 buildTools 支持低版本SDK编译出的程序,反过来不一定总是成立
    因此,这三个工具的版本号,一般都选择最新的。
参考剪藏: Android targetSdkVersion了解一下 - 简书
                  关于Android SDK里的compileSdk、minSdk、targetSdk、buildTools、Tools、Platform-tools
                

猜你喜欢

转载自blog.csdn.net/u013914309/article/details/123977040