应用在不同API版本的设备上能否正常运行,直接关系到用户体验和用户覆盖范围。
一、API版本
| 环节 | 说明 |
|---|---|
| 开发态 | 开发者通过HarmonyOS SDK调用API实现业务功能 |
| 运行态 | 设备ROM搭载的API版本决定应用能否正常运行 |
影响兼容性的字段
| 说明 | 字段 |
|---|---|
| 编译应用的SDK版本 | 开发时使用的SDK版本 |
| 应用运行的目标SDK版本 | targetSdkVersion |
| 应用运行的最低SDK版本 | compatibleSdkVersion |
版本查看方式
在HarmonyOS设备上查看API版本:设置 → 点击设备名称 → 关于本机 → API版本
二、API版本号说明
26.0.0之前的格式
格式:X.Y.Z(N)
| 字段 | 说明 | 取值范围 |
|---|---|---|
| X | 主版本号,API大版本更新 | 1-99 |
| Y | 次版本号,API小版本更新 | 0-99 |
| Z | 修订版本号,微小更新 | 0-99 |
| N | OpenHarmony底座API level | 1-99 |
26.0.0及之后的格式(语义化版本SemVer)
从API版本26.0.0开始,采用语义化版本(SemVer) 格式:X.Y.Z
| 字段 | 说明 |
|---|---|
| X(主版本号) | 包含大量新功能和重要变更,可能不兼容,需开发者适配修改 |
| Y(次版本号) | 包含新功能,原则上向后兼容(重大安全隐患或关键体验问题可能引入不兼容变更) |
| Z(修订版本号) | 问题修复和小改进,保持向后兼容 |
API版本大小关系
26.0.0 > 6.1.1(24) > 6.1.0(23) > 6.0.2(22) > 6.0.1(21) > 6.0.0(20) > 5.1.1(19) > 5.1.0(18) > 5.0.5(17)
三、系统兼容性原则
| 原则 | 说明 |
|---|---|
| 向下兼容 | 基于老版本SDK开发的应用,默认可在新版本设备上正常运行 |
| 向上兼容需判断 | 基于新版本SDK开发的应用,使用了新API,需进行兼容性判断保护后才能在老设备上正常运行 |
备注:
API在演进迭代过程中,因体验优化或安全等因素,可能会发生行为变更,并对已上架应用产生影响。这部分变更会专门在版本说明中体现,升级API版本时需关注版本说明。
四、示例代码
// 条件判断保护
import { deviceInfo } from '@kit.BasicServicesKit';
// 获取设备API版本
const apiVersion = deviceInfo.apiVersion;
// 示例:API D 在 5.0.3(15) 及以上才支持
if (apiVersion >= 15) { // 5.0.3(15) 的API level
// 使用API D
useApiD();
} else {
// 降级处理
useFallbackD();
}
// 示例:API E 在 5.0.4(16) 及以上才支持
if (apiVersion >= 16) { // 5.0.4(16) 的API level
// 使用API E
useApiE();
} else {
// 降级处理
useFallbackE();
}
六、开发建议
| 建议 | 说明 |
|---|---|
| 关注版本说明 | API版本升级时关注行为变更说明 |
| 合理设置最低版本 | 参考存量设备API版本数据 |
| 新API加保护 | 使用条件判断保护新API调用 |
| 测试覆盖 | 在不同API版本的设备上进行测试 |
应用的兼容性由SDK版本和设备API版本共同决定,遵循向下兼容原则(老应用默认可在新设备运行),新API在老设备运行需进行条件判断保护。
&spm=1001.2101.3001.5002&articleId=163730385&d=1&t=3&u=9ef31653191a48619a4a9ecd8b45fb3f)
1396
&spm=1001.2101.3001.5003&articleId=163730385&d=1&t=3&u=17ba099732e24734931bcc1573016d30)

被折叠的 条评论
为什么被折叠?



