问题引入:
有一个下载功能,在Android 5.x设备上运行正常,Android 6.x上运行异常,现象是下载进度卡在0%。
问题排查发现,是sdk的target设置为23导致,修改为21则恢复正常。
这就引出了今天讨论的问题:Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion有什么区别?
project.properties中的target——即build target,APK构建/编译版本,会引入到APK项目的build path中。一般情况下,应该使用最新的API level作为build target。
targetSdkVersion——运行时起作用。系统提供应用向前兼容的主要手段,保证同一个APK行为,高版本上仍和旧系统兼容。例如:问题中的API23,SD卡写权限属于危险权限,需要运行时动态申请;targetSdkVersion设置为23以下,则仍不需要动态申请。
官方说明如下:targetSdkVersion is the main way Android provides forward compatibility。
minSdkVersion——安装时起作用,APK最低支持版本
maxSdkVersion——安装时起作用,APK最高支持版本