HarmonyOS APP开发-鸿蒙6适配-API变化与兼容(1.基础能力篇)-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利

 HarmonyOS开发者版本6.0.0(API 20)Release(鸿蒙6) 在2025年9月25日正式发布。相对于HarmonyOS 5.0版本增加了多项新能力及对已有能力的优化。同时也有部分API进行了变更。

本篇内容是《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》这本书整体内容的延续,是咱这本书读者的福利,内容以本书的示例作为基础,适配鸿蒙6过程中,所需要完成的调整。并将这些调整记录分享给大家,本篇内容主要介绍与基础能力相关的鸿蒙6兼容适配。

   对本书感兴趣的同学可以点击以下链接进行购买,及参加 我的班级(华为官方)共同学习

​​​

往期福利:

 《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利博文目录,点击查看

1: WARN: The project has not explicitly set the 'targetSdkVersion' version at build-profile.json5. It is recommended to configure it.

该警告提示如下图所示,在本书中的示例代码均是以DevEco Studio 5.0版本创建,该版本创建的项目默认是没有targetSdkVersion配置项,本书的示例中在使用DevEco Studio均会提示该警告,解决该警告,可参考我在之前发表的这篇文章。

【鸿蒙生态共建】一文说明兼容版本、目标版本和编译版本的区别与应用实践-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利

2: windowStage.on/off Function may throw exceptions. Special handling is required.

在鸿蒙系统中,App可以通过windowStage.on来监听WindowStage生命周期的变化,处理App活动、非活动、显示、隐藏等事件。常见的写法为在onWindowStageCreate方法中,增加事件监听及处理代码,示例如下:

windowStage.on('windowStageEvent', (data) => {
  let stageEventType: window.WindowStageEventType = data;
  switch (stageEventType) {
    case window.WindowStageEventType.SHOWN:
      hilog.info(0x0000, '俩毛豆', 'EntryAbility WindowStageEvent SHOWN.');
      break;
    case window.WindowStageEventType.ACTIVE:
      hilog.info(0x0000, '俩毛豆', 'EntryAbility WindowStageEvent ACTIVE.');
      break;
    case window.WindowStageEventType.INACTIVE:
      hilog.info(0x0000, '俩毛豆', 'EntryAbility WindowStageEvent INACTIVE.');
      break;
    case window.WindowStageEventType.HIDDEN:
      hilog.info(0x0000, '俩毛豆', 'EntryAbility WindowStageEvent HIDDEN.');
      break;
    // ...
    default: 
      break;
  }
});

在DevEco Studio 6.0版本以编译上述代码时会提示警告Function may throw exceptions. Special handling is required.如下图所示

    

将上述代码增加try catch,警告即可解除,对应的off也需要使用这种方式来解除警告。

try {
  windowStage.on('windowStageEvent', (data) => {
    let stageEventType: window.WindowStageEventType = data;
    switch (stageEventType) {
      case window.WindowStageEventType.SHOWN:
        hilog.info(0x0000, '俩毛豆', 'EntryAbility WindowStageEvent SHOWN.');
        break;
      case window.WindowStageEventType.ACTIVE:
        hilog.info(0x0000, '俩毛豆', 'EntryAbility WindowStageEvent ACTIVE.');
        break;
      case window.WindowStageEventType.INACTIVE:
        hilog.info(0x0000, '俩毛豆', 'EntryAbility WindowStageEvent INACTIVE.');
        break;
      case window.WindowStageEventType.HIDDEN:
        hilog.info(0x0000, '俩毛豆', 'EntryAbility WindowStageEvent HIDDEN.');
        break;
      // ...
      default:
        break;
    }
  });
} catch (exception) {
  hilog.info(0x0000, '俩毛豆', '%{public}s', `Failed to on the listener for window stage event changes. Cause: ${JSON.stringify(exception)}`);
}

3: 'getContext' has been deprecated.

在ArkTS语言中,getContext接口可以获取与页面上下文组件关联的Context对象,如果需要在页面中获得当前Ability的Context,可调用getContext接口获取当前页面关联的UIAbilityContext或ExtensionContext。

但是,从API version 18开始废弃,官方建议使用UIContext中的getHostContext替代。当使用getContext时,编译会报警告如下图所示。

    

从API version 12开始,可以通过使用UIContext中的getHostContext来明确UI的执行上下文。也就是说,如果App仅在HarmonyOS NEXT(API 12之上)运行,那么默认的使用getHostContext接口,就可以实现获取当前页面关联的Context对象。

那么对于getContext接口将要废弃如何修改呢,主要有两个方面:

  • 如果是在UI组件中使用的getContext接口,则可以使用this.getUIContext().getHostContext()
  • 如果是在非UI组件中使用的getContext接口,则可以先将this.getUIContext().getHostContext()存储在全局存储区中(例如使用AppStorage、全局管理类等方式将该值存储),在需要时获取该值即可。在整个HAP中该值是唯一的,可以在第一个页面开始加载时存储。

 4:router.pushUrl()'pushUrl' has been deprecated.

页面跳转是App运行必要的底层支持能力,在HarmonyOS NEXT中提供多种方式实现页面跳转的能力,在本书中,部分章节的内容,页面跳转主要使用router.pushUrl()来实现从当前页面跳转到另一页面,现阶段官方推荐的页面跳转方式为导航的方式。

比如本书的部分章节中的示例,在编译时会有'pushUrl' has been deprecated.警告提示,如下图所示。

规避该警告的方式,可以使用导航路由,在咱们的《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利系列之前的内容中有介绍,详情可参考以下链接内容。

【鸿蒙生态共建】【页面路由导航】三步实现页面跳转的完整示例-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利

5:router.getParams() 'getParams' has been deprecated.

在使用router时,在页面跳转时,可以指定参数。目标页面可以使用router.getParams()获取源页面传入的参数。同样,现阶段router.getParams()也是将要废弃的状态。在编译时会有 'getParams' has been deprecated.警告提示,如下图所示。

 规避该警告的方式,可以使用导航路由,在咱们的《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利系列之前的内容中有介绍,详情可参考以下链接内容。

【鸿蒙生态共建】【页面路由导航】三步实现页面跳转的完整示例-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利

总结: 

本文基于《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》,为开发者提供鸿蒙6适配指南,涵盖API变更、编译警告处理等,提供5个关键适配方案:1)通过try-catch处理windowStage.on/off异常警告;2)使用getHostContext替代已废弃的getContext接口;3)采用导航路由替代将被弃用的router.pushUrl/getParams方法;4)解决targetSdkVersion未配置警告;5)优化数据类型转换处理。

   对本书感兴趣的同学可以点击以下链接进行购买,及参加 我的班级(华为官方)共同学习

​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俩毛豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值