android: minSdkVersion、targetSdkVersion、CompileSdkVersion三个api版本号的区别

发布时间 2023-04-13 22:10:51作者: 刘宏缔的架构森林

一,minSdkVersion:

     app可以安装的最低的api版本:
     1,安装:google play和应用市场会根据用户的api版本,
                      判断用户是否可以看到你的app
 
     2,  运行:在minSdkVersion指定版本的api上运行时,
                      如果使用了更高版本的api,会导致报错:
                     java.lang.NoSuchMethodError
                      这个需要在代码中进行判断解决
 
   3,调用第三方库:   如果调用多个第三方库,
                        每个第三方库都有自己的minSdkVersion,
                        则app设置minSdkVersion时,
                       应取所调用的第三方库中最大的minSdkVersion值
 
   4,选择版本:参考这篇文章:
    选择一个支持度较高的版本,
    如果minSdkVersion值越低,则调试兼容性的工作越多

二,targetSdkVersion:

1,targetSdkVersion 是经过测试可支持的目标版本:
     是 Android 提供向前兼容的主要依据
    即:你的app支持从minSdkVersion到targetSdkVersion区间范围内的所有api版本,
        在这些版本上都经过测试后运行无问题
 
2,选择版本:
       创建应用:android studio 通常会设置为当前的最新android版本
       发布: 通常google play或应用市场会对targetSdkVersion做出要求,
                    以保持对新版android的兼容性
 

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

         对应的源码可以访问这里获取: https://github.com/liuhongdi/
         或: https://gitee.com/liuhongdi

说明:作者:刘宏缔 邮箱: 371125307@qq.com

三,CompileSdkVersion

1,compileSdkVersion是gradle编译app时指定的api版本
   注意:这个值只在编译时起作用,它不会被编译到apk当中
   指定compileSdkVersion后,可能会出现相应的编译警告、编译错误
 
2,选择版本:
     创建应用:android studio 通常会设置为当前的最新android版本
     设置时通常与targetSdkVersion保持一致

四,总结三者的关系:

minSdkVersion (lowest possible) <= targetSdkVersion == compileSdkVersion (latest SDK)
minSdkVersion到targetSdkVersion之间这两者是一个区间。
你能够用到targetSdkVersion中最新的API,但你又需要向下兼容到minSdkVersion,
保证这个区间内的api版本都能够正常的执行你的app。
 
来自博客园mfmdaoyou的生动解释
原博文地址:
https://www.cnblogs.com/mfmdaoyou/p/6922549.html