一、鸿蒙开发基础概念
(一)应用打包格式
鸿蒙应用打包后文件扩展名为.hap(HarmonyOS Ability Package),这是其标准包格式。此外,还有 HAR(Harmony Archive,静态共享包)
和 HSP(Harmony Shared Package,动态共享包)
。
- HAR 可实现多个模块或工程共享 ArkUI 组件、资源等代码;
- HSP 能共享代码和资源,需跟随宿主应用 APP 包发布,与宿主同进程且包名、生命周期相同。
(二)Ability
Ability 是应用或服务能力的抽象,分为 UIAbility
和 ExtensionAbility
。
- UIAbility 包含 UI 界面,用于和用户交互;ExtensionAbility 提供特定场景扩展能力 。开发时,UIAbility 通过在模块中右键选择 New > Ability 创建;
- ExtensionAbility 在 Application 工程中,右键选择特定场景类型创建。
二、ArkUI框架核心特性
- 声明式组件化架构
- 采用树形组件结构,通过布局组件(Row/Column/Flex等)与基础组件的灵活组合实现界面描述
- 支持声明式编程范式,界面状态变更自动触发最小化渲染更新
- 智能渲染机制
- 数据变更与视图更新解耦,通过标记脏组件(Mark Dirty)实现局部刷新
- 弹性布局系统自动计算布局影响范围,避免全局重构
- 丰富布局体系
- 提供6大类布局容器:
▶ 线性布局:Row/Column(横纵排列)
▶ 弹性布局:Flex(自适应伸缩)
▶ 复杂布局:Stack/RelativeContainer(层叠/相对定位)
▶ 列表布局:List(滚动列表)
▶ 网格布局:Grid(二维矩阵) - 支持响应式布局策略,自动适配多终端形态
- 性能优化体系
- 轻量级渲染引擎,通过扁平化组件树结构降低渲染开销
- 内置性能分析工具集(Profiler/Inspector),支持:
✓ 组件层级可视化分析
✓ 布局复杂度检测
✓ 渲染性能瓶颈定位
- 高效状态管理
- 响应式数据绑定机制,实现状态变更到视图的精准同步
- 智能脏检查策略,仅更新受影响的子组件树
- 开发友好特性
- 支持DevEco Studio实时热重载
- 提供丰富的UI组件库与动画系统
- 兼容HarmonyOS分布式能力
三 、 跨设备通信的方式有哪些?
-
分布式软总线
- 类似"设备间高速总线",无需Wi-Fi/蓝牙直接互联
- 用途:文件传输、音视频通话、服务调用
-
蓝牙/Wi-Fi
- 传统无线通信方式
- 用途:传感器数据传输、近场设备联动
-
远程服务调用(RPC)
- 跨设备执行原子性操作
- 用途:支付、游戏联机、设备控制
-
统一消息系统
- 跨设备消息中继
- 用途:通知推送、状态同步
HarmonyOS跨设备通信技术全景图:
分层 | 核心技术 | 技术特点 | 典型场景 |
---|---|---|---|
底层协议 | HDF(硬件驱动框架) | 硬件能力抽象层 | 手表控制手机摄像头 |
DistributedSoftBus | 设备间加密直连通道 | 投屏/文件传输 | |
系统能力 | Ability(分布式能力) | FA/PA服务单元 | 天气服务共享 |
DataBus(数据总线) | 实时发布-订阅模型 | 协同编辑文档 | |
高级协议 | RPC(远程过程调用) | IDL接口定义跨设备服务 | 跨设备支付 |
WECS(Web执行上下文) | Web应用调用鸿蒙能力 | 浏览器控制智能家居 | |
连接方式 | WLAN/蓝牙/UWB | 多模通信融合 | 智能家居组网 |
消息系统 | GlobalEventBus | 全局事件广播机制 | 新消息跨设备提醒 |
四 、如何实现应用的多语言支持?
-
创建资源文件:为不同语言分别创建对应的资源文件,常用的格式为
string.json
。在这些文件里,将应用中所有需要本地化的字符串进行定义。例如,创建一个英文的string.json
文件,内容可能如下:
json 代码解读复制代码{
"welcome_message": "Welcome to our app",
"button_text": "Click Me"
}
再创建一个中文的string.json
文件:
json 代码解读复制代码{
"welcome_message": "欢迎使用我们的应用",
"button_text": "点击我"
}
- 资源引用:在代码中,避免直接使用硬编码文本,而是通过资源 ID 来引用字符串。以 ArkTS 为例:
typescript 代码解读复制代码import resource from '@ohos.resource';
// 获取当前语言环境下的资源实例
let res = resource.createResourceManager(this.context);
// 根据资源ID获取字符串
let welcomeMsg = res.getString('string.welcome_message');
- 系统设置适配:HarmonyOS 的应用具备自动适配系统语言设置的能力。当用户在系统设置中更改语言环境后,应用会自动加载与之对应的资源文件,无需额外手动干预,即可展示对应语言的文本内容。
- 动态切换语言:为了提供更好的用户体验,HarmonyOS 支持在应用运行时动态切换语言。在代码中,可以通过重新加载资源文件,并更新 UI 上的文本内容来实现。假设在界面中有一个切换语言的按钮,点击事件处理函数可如下:
typescript 代码解读复制代码import resource from '@ohos.resource';
import router from '@kit.ArkUI';
// 切换语言的函数
function switchLanguage(lang) {
// 根据选择的语言重新创建资源管理器
let res = resource.createResourceManager(this.context, lang);
// 重新获取字符串并更新UI,例如更新页面标题
let newTitle = res.getString('string.app_title');
// 假设存在更新页面标题的函数updatePageTitle
updatePageTitle(newTitle);
// 刷新页面其他需要更新的UI部分
router.reloadPage();
}
通过以上步骤,HarmonyOS 应用能够有效地实现多语言支持,为全球用户提供友好的使用体验。
评论记录:
回复评论: