鸿蒙应用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版本取值是从deviceInfo的distributionOSApiName和sdkApiVersion属性组合而成。

三、应用包中所记录的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会弹框提示)

相关推荐
李游Leo15 小时前
HarmonyOS 7 API 26 升级适配实战:API Change Assistant、targetSDKVersion 与兼容性回归
harmonyos
OH_TPC15 小时前
HarmonyOS APP开发---"智泊"智能停车App,需要用到这个库
harmonyos
用户1179104883315 小时前
AI粘贴多行需求为什么会误执行?hmharness安全粘贴拆解 GitHub:swsgbl/hmharness
ai编程·harmonyos
用户09340777351415 小时前
HarmonyOS WPS Open SDK 实践:从 HAR 集成到 OpenFileRequest 最小闭环
typescript·harmonyos
威哥爱编程1 天前
HarmonyOS 7 Fast Kit 算法加速实战:四大核心能力,把算力从系统里"借"出来
harmonyos·arkts
威哥爱编程1 天前
HarmonyOS 7 游戏快启实战:Graphics Accelerate Kit 内存镜像秒级启动 + 预启动,把读条变成"秒进"
harmonyos·arkts
木子雨廷1 天前
第 19 天|Preferences:轻量缓存与状态恢复
harmonyos
威哥爱编程1 天前
HarmonyOS 7 精准碰一碰实战:识别触碰坐标,素材精准插入指定位置
harmonyos
二流小码农1 天前
鸿蒙开发:ArrayList,可不会让UI更新哦
android·ios·harmonyos
威哥爱编程1 天前
HarmonyOS 7 数字盾 2.0 实战:可信数字签名、可信 UI 确认与可信输入
harmonyos