跳到主要内容

应用开发中的兼容性场景开发指导

构造以下场景对兼容性进行说明,以便更好地进行理解。

应用使用API场景如下(为方便查阅,下面举例使用API版本的格式说明各个字段的值):

应用举例应用A应用B应用C应用D
编译的SDK版本 (compileSdkVersion)5.0.1(13)5.0.1(13)5.0.1(13)5.0.1(13)
运行的目标SDK版本 (targetSdkVersion)5.0.1(13)5.0.1(13)5.0.1(13)5.0.1(13)
运行的最低SDK版本 (compatibleSdkVersion)5.0.0(12)5.0.0(12)5.0.1(13)5.0.1(13)
API使用情况举例使用的最高版本API为5.0.0(12)。使用的最高版本API为5.0.1(13)。使用的最高版本API为5.0.1(13)。 应用使用到的某个API在5.0.2(14)进行了行为变更,变更要求应用适配并且未做版本隔离使用的最高版本API为5.0.1(13)。 应用使用到的某个API在5.0.2(14)进行了行为变更,变更要求应用适配,但变更在5.0.2(14)进行版本隔离

上述四个应用在三台不同API版本的设备上的运行效果如下表对比所示:

设备举例应用A应用B应用C应用D
设备A API版本为: 5.0.0(12)可正常安装,正常运行。可正常安装,但运行到涉及API版本5.0.1(13)新增API时会出现功能异常。 解决措施:对应用中使用API版本5.0.1(13)新增API部分进行API兼容性判断保护。无法安装,应用市场也不会分发应用到此设备。消费者无感知。 新版本应用上架不影响低版本系统使用旧版本应用,同时在未升级设备系统版本的情况下也不会推送应用更新提醒。无法安装,应用市场也不会分发应用到此设备。消费者无感知。 新版本应用上架不影响低版本系统使用旧版本应用,同时在未升级系统版本的情况下也不会推送应用更新提醒。
设备B API版本为: 5.0.1(13)可正常安装,正常运行。可正常安装,正常运行。可正常安装,正常运行。可正常安装,正常运行。
设备C API版本为: 5.0.2(14)可正常安装,正常运行。可正常安装,正常运行。可正常安装,但运行到API版本为5.0.2(14)的设备,发生行为变更的API逻辑功能可能会出现异常。 解决措施:应用在使用5.0.2(14)版本SDK时,按照变更说明中的适配指导进行应用适配。可正常安装,虽然使用了在5.0.2(14)版本发生行为变更的API,但该API的行为变更进行了版本隔离且运行的目标版本targetSdkVersion设置为 5.0.1(13),则当运行到该行为变更API相关逻辑时,系统会根据应用中targetSdkVersion的值5.0.1(13)决定呈现API变更前的行为,应用从而运行正常。

需要注意,通过应用分享功能将应用从高API版本的设备上分享到较低API版本的设备,并且该API版本已经低于应用设定的compatibleSdkVersion要求时,应用分享功能不直接分享应用包,而是会转换为一个链接,接收方点击链接会跳转应用商店搜索分发的对应自身ROM系统匹配的版本应用。