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系统中运行到该处代码时会发生异常崩溃。这是因为代码的不兼容造成的
注意:compileSDKVersion是和编译器打交道的,而minSDKVersion和targetSDKVersion是和系统打交道的。