HarmonyOS6 应用升级经验分享
前言
最近鸿蒙应用市场支持上架HarmonyOS 6 正式版的应用了,我也把 《可可图片编辑》 升级到6,并且已经发布上架了。

这里就分享下升级到 HarmonyOS 6 的经验。
配置文件处理
优先你需要考虑到是,你的应用希望运行在哪些系统版本或者支持哪些API版本到设备上,比如API12、API13、API14、API20等等。
一般情况下的升级都是向下兼容,就是你需要保证低版本设备是可以正常使用你的应用功能,同时高版本的设备也能体验你的新特性。
这里就首先就需要考虑 compatibleSdkVersion 和 targetSdkVersion了。
-
compatibleSdkVersion:应用/元服务运行所需兼容的最低SDK版本
-
targetSdkVersion:应用/元服务运行所需目标SDK版本
通俗的讲你希望你的应用运行在最低版本是API14的手机上,同时最高版本是API20的手机上,那么你可以这样配置:
json
"targetSdkVersion": "6.0.0(20)",
"compatibleSdkVersion": "5.0.2(14)",
具体路径在:项目/build-profile.json5
中

ArkTS中的处理
假设这样的需求,你希望当前功能在API20下使用,如果不支持到设备就弹出个提醒即可,那么你可以使用 caniuse 或者 try catch来处理
canIUse
查询系统是否具备某个系统能力。
示例:
typescript
if (canIUse('你的api的能力集')) {
// 支持
} else {
// 不支持
}
系统能力(SystemCapability,简称SysCap),指操作系统中每一个相对独立的特性。不同的设备对应不同的系统能力集,每个系统能力对应一个或多个API。开发者可根据系统能力来判断是否可以使用某接口。
在IDE工具中也可以方便查看某个API的具体能力集:

try catch
一种常见的方式就是try-catch ,捕获错误,当出现程序出错了,为了避免程序崩溃,使用try将其捕获,catch用来错误处理。
typescript
try {
const res = px2vp(100)
} catch (e) {
console.log("错误,不支持")
}
API版本判断
如果是这样的场景呢,API14版本下执行代码A,API20版本下,执行代码B。考虑这个场景,我们可以使用 @kit.BasicServicesKit 中的sdkApiVersion 来实现,sdkApiVersion返回 系统软件API版本,我们将它封装起来,这样就可以在ArkTS中和ArkUI中直接使用了。
- ArkTS
```typescript
if(deviceInfo.sdkApiVersion===20){
console.log("API20")
}
```
- ArkUI
```jsx
if (this.sdkApiVersion >= 20) {
Text('应用20')
} else {
Text('应用不是20')
}
```