targetSdkVersion等理解

compileSdkVersion

采用哪个版本的Android SDK编译自己的应用,应用的使用API级别不得高于编译用的SDK的版本。如果新增高级别的API调用,那么编译用的SDK版本也要随之升高。
Google建议使用最高新版SDK编译自己的应用,避免新弃用的API,为后续更新API调用做准备。

  • 修改compileSdkVersion并不会改变运行时的行为;
  • 可能出现新的编译警告、编译错误
    编译用的SDK版本,只在编译阶段起作用,不会被包含到APK中,不会改变运行时。

minSdkVersion

应用可以运行的最低要求版本;低于minSdkVersion的Android系统无法安装此应用
Google取决于支持额外3%的设备;

targetSdkVersion

如果设置为22,那么23以及23以后的所有新特性、新功能和API新行为统统无视;只认识22以及22之前提供的功能和API行为;
比如:Android6.0(targetSdkVersion=23)以后,提供了权限管理功能,危险权限不仅要在清单文件中声明,也要代码动态向用户申请。
如果设置为targetSdkVersion=22,无论是一般权限还是危险权限,依旧只需要在清单文件中声明,不需要动态申请。
给开发者适应新行为变化的时间,避免开发者做代码修改以及充分测试前,处理兼容问题;
targetSdkVersion是Android提供向前兼容的主要依据。
Google建议开发者优先将targetSdkVersion更新到最新版SDK。
修改了targetSdkVersion,一定要充分测试!

总结

三者关系
minSdkVersion <= targetSdkVersion <=compileSdkVersion
用较低的minSdkVersion覆盖大人群。用最新的targetSdkVersion和compileSdkVersion获得最好的外观和行为。不要盲目修改targetSdkVersion。即使修改targetSdkVersion也要充分测试!

你可能感兴趣的:(targetSdkVersion等理解)