JHHK

欢迎来到我的个人网站
行者常至 为者常成

版本及适配介绍

目录

版本说明

一、在应用工程内,有如下参数配置与SDK版本相关:

SDK版本属性 app.json5配置项 build-profile.json5配置项 说明
编译工程时的SDK版本 targetAPIVersion compileSdkVersion 取值默认为DevEco Studio内置的SDK版本。
无需配置,如果配置,只能配置为当前DevEco Studio配套的SDK版本,不允许配置为其他SDK版本。
指定设备运行哪个版本的SDK - targetSdkVersion 应用在设备上运行时会以targetSDKVersion对应的行为逻辑运行。
例如设备的API版本为5.0.2(14),应用的targetSDKVersion为5.0.1(13),则会以5.0.1(13)的API逻辑运行。在5.0.2(14)发生的API变更不会影响该应用。
该字段默认与编译应用的SDK版本相同。
建议开发者在升级开发套件并重新编译应用时重点关注该字段。
应用运行的最低SDK版本 minAPIVersion compatibleSdkVersion 运行该应用的设备的SDK版本不能低于该要求,低于该要求无法安装。
默认与编译应用的SDK版本相同。该版本要求不能高于目标SDK版本要求。

DevEco Studio内置的SDK版本可以在下面的链接查看:
所有HarmonyOS版本

二、设备的SDK版本

终端设备系统(ROM)所搭载的SDK版本可在设备设置页面进入“关于本机”查看“API版本”的值。

AP版本

注意:不同的SDK版本支持的设备型号是不同的。
反过来说,一些老旧设备可能无法搭载较新的SDK

适配

编译SDK版本
(或者通过targetSdkVersion指定设备运行的版本)
设备SDK版本 说明
12 13 1、aip无变更,正常运行
2、如果api发生了行为变更,且没有做版本隔离,应用需要按官方文档指导做适配
3、如果api发生了行为变更,且做了版本隔离,不要适配,设备运行app时会按12的行为发生
13 12 1、如果应用使用了新增api,需要做适配,否则设备运行时会发生崩溃
2、xy:如果api发生了行为变更,且没有做版本隔离,应用需要按官方文档指导做适配
3、xy:如果api发生了行为变更,且做了版本隔离,不要适配,设备运行app时会按12的行为发生
xy:根据文档中 《API的行为变更是否进行版本隔离》 这一小节推测出的第2、3条

总结
需要适配的根本原因是:
编译时app使用的sdk版本和运行app的设备内置的SDK版本不同导致的。
再具体到api,就是编译app时调用的api在运行app的设备上是否存在,是否发生了变更。

通常高版本的SDK会兼容低版本的SDK,这也是为什么设备系统升级后app还能正常运行的原因。
如果某一个api在高版本发生了行为变更,并且没有做版本隔离,那么就会出问题。
比如有一个叫test的api在12版本返回的是字符串,在13版本返回的是数字。且13版本sdk没有做版本隔离,这个时候就需要适配。


行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.