鸿蒙应用api的兼容性:参数配置(二)

一、SDK版本

三个SDK版本属性

SDK版本属性 配置文件 打包后字段 说明
编译应用的SDK版本(compileSdkVersion) build-profile.json5 compileSdkVersion 决定开发过程中可自动联想的API范围和工具链版本。默认为DevEco Studio自带的SDK版本
应用运行的目标SDK版本(targetSdkVersion) build-profile.json5 targetAPIVersion 默认与compileSdkVersion相同。系统侧进行API版本隔离的变更以此版本为目标行为
应用运行的最低SDK版本(compatibleSdkVersion) build-profile.json5 minAPIVersion 应用能安装的最低API版本,低于此版本无法安装。不能高于targetSdkVersion

三者大小关系

复制代码
compatibleSdkVersion ≤ targetSdkVersion ≤ compileSdkVersion

如果配置不符合这个规则,会有报错提示。

配置示例

开发中使用并适配了API版本6.0.2(22),同时希望应用能够运行到尽可能多的HarmonyOS现网设备:

复制代码
{
  "products": [
    {
      "name": "default",
      "signingConfig": "default",
      "compileSdkVersion": "6.0.2(22)",
      "targetSdkVersion": "6.0.2(22)",
      "compatibleSdkVersion": "6.0.0(20)",
      "runtimeOS": "HarmonyOS"
    }
  ]
}

targetSdkVersion的作用

应用在终端设备上运行时,会呈现以targetSdkVersion版本为目标版本的行为。

当前设备API版本为5.0.2(14),应用targetSdkVersion配置为5.0.1(13),则经过API版本隔离的变更会以5.0.1(13)版本的API行为呈现。在5.0.2(14)发生的API变更不会影响该应用在当前设备的实际表现。

建议:升级SDK后重新编译应用工程时,充分考虑API行为变更的影响,合理配置targetSdkVersion。

二、运行应用的设备系统所搭载的API版本

应用能否正常运行在终端设备上,与终端设备系统所搭载的API版本是否匹配应用中声明的SDK版本相关。

三种获取方式

方式 操作
方式一(设置界面) 设备设置 → 关于本机 → 查看"API版本"
方式二(hdc命令) hdc shell param get const.product.os.dist.apiname
方式三(API接口) deviceInfo中的distributionOSApiVersion/sdkApiVersion接口

hdc命令

复制代码
# 获取API版本字符串(X.Y.Z格式)
hdc shell param get const.product.os.dist.apiname
> 5.0.5

# 获取API版本数值(X*10000 + Y*100 + Z)
hdc shell param get const.product.os.dist.apiversion
> 50005

# 获取OpenHarmony底座的API Level
hdc shell param get const.ohos.apiversion
> 17

说明

参数 说明
const.product.os.dist.apiname API版本的字符串表示(X.Y.Z)
const.product.os.dist.apiversion API版本的数值表示(X*10000+Y*100+Z)
const.ohos.apiversion OpenHarmony底座的API Level

注意 :界面中的API版本取值是从deviceInfodistributionOSApiNamesdkApiVersion属性组合而成。

三、应用包中所记录的SDK版本信息

在应用包的module.json5中会记录三个字段:

字段 说明
compileSdkVersion 编译应用的SDK版本
targetAPIVersion 目标API版本
minAPIVersion 最低API版本

应用市场分发规则

应用市场分发时主要根据minAPIVersion进行分发范围控制:

  • 用户设备的API版本低于minAPIVersion时:

    • 可在推荐页展示或通过搜索查看到

    • 点击安装时会提示"无法安装"并给出所需系统版本要求

四、API版本隔离

API版本在演进过程中可能引入行为变更。系统对变更进行API版本隔离是一种对应用的保护机制

通过配置targetSdkVersion字段来告诉系统该应用运行的目标版本,从而决定使用什么样的API行为。

版本隔离的处理逻辑

情况 处理方式
配置的targetSdkVersion < API行为变更引入的版本 完全无需关注此变更影响,仍能在更高API版本系统上正常运行
配置的targetSdkVersion ≥ API行为变更引入的版本 需要关注此API行为变更,如果需在更高API版本系统正常运行,需要进行适配

未进行版本隔离的情况

如果API在行为变更时未进行版本隔离,将影响使用该API的所有应用。这些应用都必须按照变更说明中的适配指导进行调整,重新声明SDK版本要求,并完成编译上架。

说明

  • 2025年1月 起,将对所有API行为变更是否进行版本隔离进行明确声明

  • 从API版本6.0.0(20) 开始,要求应用显式配置targetSdkVersion(如未配置,DevEco Studio会弹框提示)

相关推荐
北墨NoLimit7 小时前
鸿蒙线程间通信怎么选:TaskPool、TaskGroup、LongTask 与 Worker 实战
typescript·harmonyos
woshihuanglaoshi9 小时前
错题四科入库:鸿蒙错题本种子数据与复习队列效果
学习·华为·harmonyos·鸿蒙
kiros_wang9 小时前
鸿蒙ArkTS枚举实战|静态枚举、动态枚举业务选型、规范落地与避坑全解
harmonyos
2501_9197490311 小时前
华为鸿蒙免费音乐APP—小羊免费音乐
华为·harmonyos·鸿蒙
世人万千丶12 小时前
物品借还闭环:鸿蒙物品清单种子数据与清单效果
学习·华为·harmonyos·鸿蒙
贾伟康12 小时前
【知律|10】HarmonyOS ArkTS 案例边界实战:明确普法内容不替代法律意见
harmonyos·arkts·arkui·应用合规·内容治理
xq952713 小时前
鸿蒙组件化设计横空出世
harmonyos
特立独行的猫A13 小时前
Tauri v2 桌面应用m3u8dl-tauri移植到 HarmonyOS(鸿蒙 PC)完整实战指南
harmonyos