我们在android工程中经常会遇见如下几个SDK Version——minSdkVersion、targetSdkVersion和maxSdkVersion。根据名字看是显而易见的含义,但是往往越显而易见,越不会被重视。知道个似是而非,大概意思就差不多。因此,我觉得有必要记下一笔,讲讲这几个属性在android里到底是什么意思。
minSdkVersion
指的是当前APP可以安装的系统最低版本。如果系统API低于这个版本,将无法安装。这个值是必须要申明的,没有指定的话会默认是从API Level =1开始兼容,那么当我们使用了高版本的API,却被用户安装到了低版本的手机上的时候就会因为找不到API而crash。
targetSdkVersion
指的是当前APP最适合运行的版本,没有配置的话默认值是minSdkVersion。比如我们的apk发布后,安装到android新发布的新版本上,新老版本可能在UI和API上有细微差别,或者有些API废弃,这种情况下,指定targetSdkVersion,就会保留当前指定版本的行为。
maxSdkVersion
指的是apk能够安装的最高版本,一般是希望能够支持最新版的系统,因此不推荐申明。
和uses-permission的关系
这个关系是经常被忽略的。主要是Android系统版本更新迭代过程中,很多权限必须在指定版本上使用,当然目前很大一部分检查和Fixing由编译器帮助完成。在一次全编译后,会将所有的AndroidManifest进行合并,这个过程会产生两个文件:
\build\outputs\logs\manifest-merger-debug-report.txt
\build\intermediates\manifests\full\debug\ AndroidManifest.xml
第一个文件会说明为什么会产生某一个uses-permission,第二个是合并后APP实际安装时候需要的所有uses-permission