鸿蒙应用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会弹框提示)

相关推荐
思录Echo2 小时前
自助易AI数字人外挂技术剖析|如何解决政企智能客服的多端适配难题?
人工智能·华为·harmonyos
方白羽3 小时前
为什么 Android 非要用 Intent 传值?
android·ios·harmonyos
不爱吃糖的程序媛9 小时前
从 0 到 1:react-native-transformer-text-input 鸿蒙化适配实录
react native·transformer·harmonyos
不爱吃糖的程序媛9 小时前
React Native 三方库鸿蒙适配实战:react-native-emoji-popup(Fabric 自定义组件)从 0 到 1
react native·harmonyos·fabric
贾伟康9 小时前
【口算王|19】HarmonyOS ArkTS 回归测试实战:覆盖启动、空数据、异常输入和重复点击
软件测试·harmonyos·arkts·回归测试·hypium
贾伟康9 小时前
【句匠|09】HarmonyOS ArkTS 学习统计实战:汇总正确率、连续学习和薄弱类型
harmonyos·arkts·appstorage·学习统计·本地统计
贾伟康10 小时前
【口算王|17】HarmonyOS ArkTS 亮暗色与视觉令牌实战:集中颜色、间距和交互状态避免页面割裂
harmonyos·arkts·arkui·深色模式·ui设计
搬砖的kk10 小时前
从 0 到 1:react-native-screenshot-aware 鸿蒙适配实战(RNOH 0.84)
react native·华为·harmonyos
贾伟康10 小时前
【口算王|15】HarmonyOS ArkTS 本地状态持久化实战:让保存、删除和页面返回后的数据即时一致
harmonyos·arkts·数据持久化·状态管理·preferences
贾伟康10 小时前
【口算王|18】HarmonyOS ArkTS 权限与隐私实战:让 module.json5、功能说明和拒绝路径一致
harmonyos·arkts·权限管理·隐私合规·module.json5