目录
版本说明
一、在应用工程内,有如下参数配置与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版本”的值。
注意:不同的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没有做版本隔离,这个时候就需要适配。
行者常至,为者常成!