HarmonyOS开发——知识重点
一 概述
- 应用架构的演进
- ArkUI与声明式开发
- 配置与管理
- 兼容性与特征能力
- 测试与发布流程
- 线程与后台任务处理
- 通信协议与数据管理
- 端云一体化开发
- 组件开发
- 其他
二 应用架构的演进
- 单体架构:早期的应用开发模式,所有功能集成在一个应用内,部署和维护相对简单,但随着应用复杂度增加,其缺点逐渐显现,如难以扩展、部署缓慢等。
- 微服务架构:将单体应用拆分为多个独立的服务,每个服务负责一部分业务功能,服务间通过轻量级通信协议进行交互。这种架构提高了系统的可扩展性和可维护性。
- Serverless架构:一种更进一步的架构模式,开发者无需关心服务器的管理,只需编写代码,由云服务商负责运行环境的搭建、扩缩容等,进一步降低了运维成本
三 ArkUI与声明式开发
3.1 ArkTS 开发范式
ArkTS:是鸿蒙操作系统中的一种开发语言,基于TypeScript,为鸿蒙应用提供了一种高效的开发方式。它允许开发者使用TypeScript的语言特性来编写鸿蒙应用,同时享受鸿蒙操作系统提供的强大的开发框架和组件
3.2 ArKUI声明式开发范式
- 基本组成:包括装饰器、自定义组件、UI描述、内置组件、属性方法、事件方法等。
- ArkUI声明式开发:ArkUI是鸿蒙操作系统的声明式UI开发范式,它允许开发者通过声明式的方法来构建用户界面。
- ArkTS声明式开发组成:包括装饰器、自定义组件、UI描述、内置组件、属性方法、事件方法
- 状态数据触发方法:@state修饰的状态数据被修改时会触发组件的build方法进行UI界面更新
- @state状态数据特征:@State变量必须给定初始值,否则编译器无法推断其类型。
四 配置与管理
- 版本发布:在软件开发中,发布版本是一个重要的过程。一旦版本发布,该版本的代码将被冻结,不可再进行更改。这是为了确保生产环境中的稳定性和可预测性。
- 版本迭代:新功能的添加和bug的修复通常在新版本中进行。开发者可以在新版本中进行更改,并通过发布新版本来更新应用。
- 云函数触发器:云函数在打包前,创建对应的触发器。
- 端云一体化开发:使用端云一体化开发,开发者无需自己搭建服务器,并进行运维,因为云服务提供了后端服务的托管和运维。
- 端云一体化费用:并不是所有使用端云一体化的云端资源都需要支付费用,有些服务可能有免费额度或免费层。
- 页面路径配置:在main_pages.json文件中可以设置页面的路径配置信息。
- ohpm三方库依赖:引用ohpm(OpenHarmony Package Manager)三方库的包依赖是在oh-package.json5配置文件中设置的。
- 应用包名与config.json:创建应用时,应用包名需要和config.json文件中的bundleName字段保持一致。
- 应用或元服务软件包格式:上传鸿蒙应用或元服务软件包时,软件包的格式是.app。
- 应用包名规范:应用包名不能包含系统保留字段,如.system.、.harmony.、.ohos等,应采用反域名形式。其他如 test 之类可以
- 鸿蒙应用/元服务上架问题:包括软件包中的发布Profile文件和当前上传软件包的应用不匹配、软件包中的发布证书与发布Profile文件中的发布证书不匹配、软件包未签名导致提示非法软件包、软件包中使用证书已经失效或过期。
五 测试与发布流程-Serverless服务
- 云函数:Serverless服务的一种,允许开发者编写和部署代码而无需管理服务器。云函数按实际使用计费,具有弹性伸缩和免运维的特点。
- 云数据库和云存储:提供了数据存储和访问的能力,也是Serverless服务的一部分。它们可以根据实际使用情况进行自动扩缩容,简化了数据管理。
- 鸿蒙应用获取:发布后的鸿蒙应用可以在华为应用市场获取。
- 开放式测试体验:受邀测试用户可以通过进入服务中心,打开“开发者测试”开关,在最下方的“服务测试”找到待体验的元服务。
- 追加测试用户:发布开放式测试版本后,可以手动添加追加用户。追加测试用户:发布开放式测试版本后,可以手动添加追加用户。
- 开放式测试版本审核:发布开放式测试版本后,不需要人工审核。
- 元服务测试用户列表:元服务创建测试用户时,用户列表存储位置需要选择,例如选择地区“中国”。
- 开放式测试版本时间限制:开放式测试版本的测试时间是有限制的,具体时长需根据开发者在发布时设置。
- 追加测试用户流程:发布开放式测试版本后,开发者可直接在当前版本追加新的测试用户,并通过系统发送邀请。
- 发布应用Profile类型:发布HarmonyOS应用时,需要创建的Profile类型是发布类型。
六 线程与后台任务处理-Worker线程
- worker线程:worker线程是用于执行后台任务的,它不支持UI操作,因为它是在一个没有UI上下文的环境中运行的
- Worker线程与UI操作:Worker线程不支持UI操作,主要用于执行耗时操作,以避免阻塞UI线程。UI更新需通过与UI线程的通信实现。
- Worker线程数量限制:Worker线程的最大同时激活数为8,以确保系统资源的合理分配和有效管理。
七 通信协议与数据管理-云函数包格式
- .zip包:云函数的部署包通常是以.zip格式提供的压缩包,包含了函数的代码、依赖库以及其他必要的配置文件。
- WebSocket协议:模块提供的全双工通信协议是WebSocket。
- 首选项存储:首选项(Preferences)是一种轻量级的存储解决方案,用于存储应用的设置信息。在鸿蒙中,首选项的Key是唯一的,不能重复。
- 首选项数据库特性:首选项是非关系数据库,它不支持ACID特性,因为它主要用于存储简单的键值对数据。
- HAP包大小:元服务包由一个或多个HAP包组成,每个HAP包不得超过10MB,以提供秒开体验。
- 端云一体化开发:端云一体化开发允许开发者无需自建服务器和进行运维,利用华为云提供的Serverless服务进行应用开发。
- 认证服务:支持华为账号认证。
- 公共事件服务:提供订阅、发布和取消订阅公共事件的能力
- 加密:HUKS的中文全称是“通用秘钥库系统”。
- WebView:HarmonyOS提供的WebView支持与H5双向通信。
八 端云一体化开发
- 优势:端云一体化开发允许开发者在一个工程内同时开发端侧和云侧代码,降低了后端开发的门槛。云侧基于Serverless构建,具有弹性伸缩和免运维的优势。此外,HarmonyOS的DevEco Studio提供了强大的开发工具支持。
- 开发语言:端云一体化开发中,前后端都可以使用TypeScript,无需精通多种语言。
- DevEco Studio实现端云一体化:通过工程模板来实现。
- 支持的最低鸿蒙API版本:端云一体化支持的最低API版本是9。
- 工程目录结构:分为端开发工程Application、云开发工程CloudProgram、端侧公共库Extrernal Libraries。
- 集成的服务SDK:包括云函数、云数据库、云存储。
- 云函数调用:云函数触发器创建时机应在云函数打包之前创建对应函数的触发器。
- 云端资源:使用端云一体化的云端资源不一定需要支付费用,存在免费档套餐。
九 组件开发
页面栈
- 页面栈数量:每调用一次router.pushUrl()方法,默认情况下,页面栈数量会增加1。鸿蒙系统对页面栈的数量有限制,通常是32个。
- 页面跳转销毁:router.replaceUrl()方法可以跳转到一个新页面,并销毁当前页面。
Tab组件页签
- Tabs组件页签位置:当barPosition为End,vertical属性为true时,页签位于容器右侧,而不是底部。
Column和Row容器组件
- 子组件对齐:alignItems用于设置子组件在交叉轴方向上的对齐格式,而justifyContent用于设置子组件在主轴方向上的对齐格式。
自定义组件和子组件
- 生命周期:每个自定义组件都有自己的生命周期,但并非所有生命周期函数都对所有组件有效
- 自定义组件生命周期:每一个自定义组件@Component都有自己的生命周期,但注意 Page 相关的周期只有 @Entry 的页面入口有
- 自定义组件生命周期时机:aboutToAppear()在build函数之前执行。用于组件显示前的准备工作。
- 父子组件双向数据绑定: 使用 @State 和 @Link 进行数据双向绑定
Video组件
- 回调事件:onPrepared事件用于在视频准备完成时获取视频时长。容易混淆的是onStart`视频播放时触发该事件,但在这里无法获取视频时长
组件化特点
- 特点:自定义组件的组件化特点包括可组合、可重用、配置化生命周期。数据驱动更新
容器组件滚动
- 可滚动组件:Scroll、List、Grid等容器组件可以滚动。
组件层次结构
- 层次结构正确性:正确的层次结构应符合父子组件的嵌套关系。
- 正确的层次结构:包括Text>Span、Button>Column>Image、Column>Row>Button
十 其他
- 鸿蒙应用获取渠道:发布后的鸿蒙应用可以在华为应用市场获取。
- 帐号认证方式:HarmonyOS认证服务支持华为帐号。
- UIAbility启动模式:muliton为多实例模式,每次startAbility都会启动一个新的实例,但系统默认启动模式为singleton。
- 证书类型:发布应用时要创建证书,证书类型应选择“发布证书”。
- 公共事件服务能力:包括订阅公共事件、发布公共事件、取消订阅公共事件。注意,没有取消发布, 都发出去了怎么取消
- 端云一体化集成服务SDK:包括云函数、云数据库、云存储。注意没有云托管
- 端云一体化云函数操作:包括编写函数、测试函数、打包函数、部署函数。
- UIAbility生命周期函数:包括onCreate、onForeground、onBackground、onDestroy。
- 开放式测试体验:受邀测试用户需点击邀请链接接受邀请,然后跳转到应用市场或搜索待体验的元服务名称进行体验。
- 软件包格式:鸿蒙应用或元服务软件包的格式为.app,由一个或多个HAP和描述每个HAP属性的pack.info组成。注意区别云函数是 zip
- Profile文件的必要性:一个完整的软件包需要有一个Profile文件,用于描述应用的配置信息,如包名、版本号、设备类型等。
- 开放式测试版本时间限制:开放式测试版本的测试时间是有限制的,具体时长需根据开发者在发布时设置。
- 组件子组件包含:LoadingProgress组件通常不包含子组件,而Button、Text和Row等组件可以包含其他子组件
- ohpm三方库依赖配置:引用ohpm三方库的包依赖在oh-package.json5配置文件中设置。
- module.json5配置信息:module.json5中包含Ability的配置信息、设备类型信息和应用权限申请列表。注意应用名和应用版本不在这里而在 app.json
十一 参考
- 鸿蒙HarmonyOS开发高级认证知识点总结