Flutter android build.gradle的minSDKVersion、targetSDKVersion和compileSDKVersion区别

Flutter android build.gradle的minSDKVersion、targetSDKVersion和compileSDKVersion区别,第1张

minSDKVersion

顾名思义是设置sdk最低版本的。作用就是 *** 作系统会拒绝低于
该标准的APP的安装。

例如,minSDKVersion设置为16(Jelly Bean 4.1系统),那么该APP将只能运行在4.1系统以上的设备中,想要在2.3系统上安装是不被允许的。

minSDKVersion比较容易理解,经常让我混淆的时其他两个版本设置会对API产生的影响。

targetSDKVersion

targetSDKVersion就是设置SDK目标版本,目标版本的设置就是为了告诉Android系统:本APP是设计计划给哪个API级别运行的。

一般情况下目标版本设置为当前Android最新版本即可。既然是一般那也就有特殊情况,什么情况下需要修改目标版本呢?

如果新发布的SDK版本会对UI显示甚至 *** 作系统运行机制产生影响,而你的APP又没有做好应对措施,为了保证你的APP正常运行,那你需要降低目标版本。因为你的目标版本仍然是旧的SDK,所以在新版系统中那些新的变化会在你的APP中被忽略,继而保证其正常运行。

例如,Android6.0系统增加了动态权限机制,如果为了追时髦,盲目把你的targetSDKVersion设置为23(6.0),那么在需要使用权限的地方将会出现异常。为此,在你做好动态权限申请之前,为保障APP正常运行,你需要将目标版本设置低于23。

compileSDKVersion

compileSDKVersion是设置编译版本。

一般来说编译目标版本是选择最新的SDK,这样可以及时使用体验到新的API提供的新功能。

值得注意的是,如果minSDKVersion和compileSDKVersion版本差距比较大的话,可能会造成API的不兼容。例如,你的最低版本是2.3 ,但是编译版本是5.0,API中使用了4.0SDK提供的一些新API,这样的后果是在2.3系统中运行到该处代码时会发生异常崩溃。这是因为代码的不兼容造成的。

如何解决这种API的不兼容呢?
一种办法是提升minSDKVersion到新API使用的SDK版本,但是这种方法只是回避兼容性,并没有确实解决问题,而且还要放弃低版本部分市场。
比较好的做法是在使用新API地方做设备版本的检查。Build.VERSION_SDK_INT常量表示当前Android设备的版本号。可以将该常量同新API版本进行比较,如果版本大于等于新版API版本号,则正常使用新API功能,否则使用旧的调用。兼容设置如下:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/992434.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存