> 文档中心 > 鸿蒙开发HarmonyOS3.1 API8-》API9​

鸿蒙开发HarmonyOS3.1 API8-》API9​


转自华为开发者联盟【“蒙”友会“稿”起来】API8-》API9

鸿蒙开发HarmonyOS3.1 API8-》API9​

随着系统的演进发展,HarmonyOS先后提供了两种应用模型

  • FA(Feature Ability)模型: HarmonyOS API 7开始支持的模型,已经不再主=。
  • Stage模型: HarmonyOS API 9开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,因此称这种应用模型为Stage模型。

因此,开发API9或以上(也就是HarmonyOS3.1或以上)的应用,就必须使用Stage模型进行开发。
鸿蒙开发HarmonyOS3.1 API8-》API9​

一、API8-》API9 变化:

1、ArkTS声明式UI更新机制优化

  • ArkTS声明式UI在API9上优化了相关UI更新机制,当自定义组件的某个状态变量发生变化导致自定义组件重新渲染时,仅执行该自定义组件build函数中的部分UI描述(使用了该状态变量的内置UI组件的UI描述)来实现更高性能的UI更新。
  • 而API8及以前在状态变量发生变化时会执行build函数中的全量UI描述来实现UI更新。

2、Ability框架

  • 应用组件启动规则变更
  • API异常处理方式变更
  • 部分接口废弃并新增对应替代接口
  • 请求权限对应接口的变更

3、包管理

  • 包管理API异常处理方式变更,原有API8及之前的接口废弃,使用新的API9接口

等等。

二、新建API9的工程

1、按照官方教程使用ArkTS语言开发(Stage模型),可以非常清晰简单地创建ArkTS工程。关键点:

  • Compile SDK选择“3.1.0(API 9)”
  • Model 选择“Stage”

2、使用DevEco Studio的QuickStart也非常方便

鸿蒙开发HarmonyOS3.1 API8-》API9​

三、API8转API9的工程

1、FA模型不能直接转换为Stage模型

API8的工程都是FA模式,不能直接转换为API9的Stage模型的,但是官方提供了一定的辅助功能,在工程切换API后,会把工程目录更新一遍。后面就需要根据工程项目的实际编码,靠自己逐个转化。
鸿蒙开发HarmonyOS3.1 API8-》API9​

2、部分转化

  • Context
getContext(this) as AppContext.AbilityContext改为getContext(this) as any
  • 页面路由表(放在main_pages.json里)
{  "src": [    "pages/NavPage",    "pages/DetailsPage",    "pages/ProductDetailPage"  ]}
  • Stage模型概念图
    鸿蒙开发HarmonyOS3.1 API8-》API9​

四、API9的测试

1、测试设备

鸿蒙开发HarmonyOS3.1 API8-》API9​

从DevEco Studio的Device Manager可以看到,IDE提供了本地模拟器、远程模拟器和远程真机的测试方式,当然,如果有HarmonyOS3.1的真机设备,也可以真机调试。其中,远程真机只有API6和API8的机器,期待上线API9的远程真机。
鸿蒙开发HarmonyOS3.1 API8-》API9​

2、体验对比:

  • 真机>远程真机>本地模拟器>远程模拟器
  • 目前本地模拟器比较慢(占用大量资源),远程模拟器画质受网速影响比较大,远程真机还没有API9,手上的设备也还没能升到API9,也就是HarmonyOS3.1……期待、等待……

五、期待

开发API9的Stage模型应用还是处于过渡到统一的阶段,免不了一些取舍,需要做一定的转化兼容适配。相信华为能很快迭代好。在这个过程,也适当提出一些开发API9的问题和建议:

1、找不到API8转化到API9合适的文档资料,也没有教程,只有零碎的API规则说明。

2、API9的测试还是比较麻烦,如上述对测试的说明。

3、API9,Stage模型的例子、模板太少。

鸿蒙开发HarmonyOS3.1 API8-》API9​

艺术字体转换器