安卓MinSdkVersion、CompileSdkVersion、TargeSdkVersion的区别

一、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
这个是最不容易理解的,简单的理解就是你使用哪一个版本的api。因为新的系统是兼容旧的api的,比如新出来的安卓7.0,它是可以使用之前6.x、5.x、4.x、2.x中提供的api,同一个api,targetSdkVersion不一样,api的实现也可能不一样。比如安卓7.0在activity中新加了一个函数setAbc(),你的targetSdkVersion指定是23(6.0),你在代码中使用了这个函数,apk运行在7.0上就会崩溃,因为找不到setAbc()这个函数。
也可能6.0上有这个函数,7.0上也有,但是7.0上对这个函数的内部实现作了修改,那具体是使用哪个实现,是根据targetSdkVersion来决定的。

三,CompileSdkVersion
这个比较容易理解,就是你编译使用哪个版本的sdk,使用哪个版本的sdk,代码中就能使用这个sdk提供的api和特性。比如上面提到的,你CompileSdkVersion使用了24,可以使用setAbc()这个函数,但是不一定机器就支持这个函数,你的targetSdkVersion对应的版本也要支持这个函数。

举个实际当中的例子:
Activity在api 11中添加了getActionBar()这个函数,
首先,你的CompileSdkVersion必须大于或等于11才能使用这个函数;
其次,你的MinSdkVersion必须大于或等于11,编译才能通过;
再次,你的TargetSdkVersion必须大于或等于11,才能保证执行这个函数不会崩溃。targetSdkVersion指定成11,那么实际表现的跟11的特性完全一致,指定成更高的版本,比如14,那么表现就是跟14的完全一致。

猜你喜欢

转载自blog.csdn.net/devnn/article/details/53930349