一、MinSdkVersion
这个比较容易理解,就是你的apk支持的最低的安卓系统版本,如果MinSdkVersion是10(2.3.3),打包后的apk安装在安卓2.2的系统上,则安装不成功。
系统会提示: ERROR: Application requires API version 8. Device API version is 7。
那么这个配置成多少合适呢?太小的话,就不能使用新系统的api和特性,大太的话,兼容的平台就少了,现在4.0及以上的机型占的97%,推荐使用4.0。
二,TargetSdkVersion
这个简单的理解就是你使用哪一个Android版本的api或特性。因为新的Android系统是向前兼容的,比如新出来的安卓7.0,它是可以使用之前6.x、5.x、4.x、2.x中提供的api(保证旧的apk能正常运行)。比如Android 6.0增加了运行时权限,如果你不想动态申请权限,就可以将tartgetSdkVersion设成6.0以下,那么就可以免去动态权限了,你的apk在6.0以上的机器上也可以正常运行。
三,CompileSdkVersion
这个比较容易理解,就是你编译使用哪个版本的sdk,使用哪个版本的sdk,代码中就能使用这个sdk提供的api和特性。但是起不起作用还得看机器的系统版本。它们三者的关系是MinSdkVersion <= TargetSdkVersion <= CompileSdkVersion。一般将TargetSdkVersion与CompileSdkVersion保持一致。
举个实际当中的例子:
Activity在api 11中添加了getActionBar()这个函数,
首先,你的CompileSdkVersion必须大于或等于11才能使用这个函数;
其次,你的MinSdkVersion必须大于或等于11,编译才能通过;
再次,你的TargetSdkVersion必须大于或等于11,才能保证执行这个函数不会崩溃。同一个函数在不现的系统版本里实现也可能不一样。比如targetSdkVersion指定成5.0,那么实际表现的跟5.0的特性完全一致,指定成更高的版本,比如6.0,那么表现就是跟6.0的完全一致。