鸿蒙基础知识记录(二)

270 阅读5分钟

一、鸿蒙开发基础概念

(一)应用打包格式

鸿蒙应用打包后文件扩展名为.hap(HarmonyOS Ability Package),这是其标准包格式。此外,还有 HAR(Harmony Archive,静态共享包)HSP(Harmony Shared Package,动态共享包)

  • HAR 可实现多个模块或工程共享 ArkUI 组件、资源等代码;
  • HSP 能共享代码和资源,需跟随宿主应用 APP 包发布,与宿主同进程且包名、生命周期相同。

(二)Ability

Ability 是应用或服务能力的抽象,分为 UIAbilityExtensionAbility

  • UIAbility 包含 UI 界面,用于和用户交互;ExtensionAbility 提供特定场景扩展能力 。开发时,UIAbility 通过在模块中右键选择 New > Ability 创建;
  • ExtensionAbility 在 Application 工程中,右键选择特定场景类型创建。

二、ArkUI框架核心特性

  1. 声明式组件化架构
  • 采用树形组件结构,通过布局组件(Row/Column/Flex等)与基础组件的灵活组合实现界面描述
  • 支持声明式编程范式,界面状态变更自动触发最小化渲染更新
  1. 智能渲染机制
  • 数据变更与视图更新解耦,通过标记脏组件(Mark Dirty)实现局部刷新
  • 弹性布局系统自动计算布局影响范围,避免全局重构
  1. 丰富布局体系
  • 提供6大类布局容器:
    ▶ 线性布局:Row/Column(横纵排列)
    ▶ 弹性布局:Flex(自适应伸缩)
    ▶ 复杂布局:Stack/RelativeContainer(层叠/相对定位)
    ▶ 列表布局:List(滚动列表)
    ▶ 网格布局:Grid(二维矩阵)
  • 支持响应式布局策略,自动适配多终端形态
  1. 性能优化体系
  • 轻量级渲染引擎,通过扁平化组件树结构降低渲染开销
  • 内置性能分析工具集(Profiler/Inspector),支持:
    ✓ 组件层级可视化分析
    ✓ 布局复杂度检测
    ✓ 渲染性能瓶颈定位
  1. 高效状态管理
  • 响应式数据绑定机制,实现状态变更到视图的精准同步
  • 智能脏检查策略,仅更新受影响的子组件树
  1. 开发友好特性
  • 支持DevEco Studio实时热重载
  • 提供丰富的UI组件库与动画系统
  • 兼容HarmonyOS分布式能力

三 、 跨设备通信的方式有哪些?

  1. 分布式软总线

    • 类似"设备间高速总线",无需Wi-Fi/蓝牙直接互联
    • 用途:文件传输、音视频通话、服务调用
  2. 蓝牙/Wi-Fi

    • 传统无线通信方式
    • 用途:传感器数据传输、近场设备联动
  3. 远程服务调用(RPC)

    • 跨设备执行原子性操作
    • 用途:支付、游戏联机、设备控制
  4. 统一消息系统

    • 跨设备消息中继
    • 用途:通知推送、状态同步

HarmonyOS跨设备通信技术全景图:

分层核心技术技术特点典型场景
底层协议HDF(硬件驱动框架)硬件能力抽象层手表控制手机摄像头
DistributedSoftBus设备间加密直连通道投屏/文件传输
系统能力Ability(分布式能力)FA/PA服务单元天气服务共享
DataBus(数据总线)实时发布-订阅模型协同编辑文档
高级协议RPC(远程过程调用)IDL接口定义跨设备服务跨设备支付
WECS(Web执行上下文)Web应用调用鸿蒙能力浏览器控制智能家居
连接方式WLAN/蓝牙/UWB多模通信融合智能家居组网
消息系统GlobalEventBus全局事件广播机制新消息跨设备提醒

四 、如何实现应用的多语言支持?

  1. 创建资源文件:为不同语言分别创建对应的资源文件,常用的格式为string.json 。在这些文件里,将应用中所有需要本地化的字符串进行定义。例如,创建一个英文的string.json文件,内容可能如下:

{
    "welcome_message": "Welcome to our app",
    "button_text": "Click Me"
}

再创建一个中文的string.json文件:

{
    "welcome_message": "欢迎使用我们的应用",
    "button_text": "点击我"
}
  1. 资源引用:在代码中,避免直接使用硬编码文本,而是通过资源 ID 来引用字符串。以 ArkTS 为例:
import resource from '@ohos.resource';

// 获取当前语言环境下的资源实例
let res = resource.createResourceManager(this.context);
// 根据资源ID获取字符串
let welcomeMsg = res.getString('string.welcome_message'); 
  1. 系统设置适配:HarmonyOS 的应用具备自动适配系统语言设置的能力。当用户在系统设置中更改语言环境后,应用会自动加载与之对应的资源文件,无需额外手动干预,即可展示对应语言的文本内容。
  2. 动态切换语言:为了提供更好的用户体验,HarmonyOS 支持在应用运行时动态切换语言。在代码中,可以通过重新加载资源文件,并更新 UI 上的文本内容来实现。假设在界面中有一个切换语言的按钮,点击事件处理函数可如下:
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 应用能够有效地实现多语言支持,为全球用户提供友好的使用体验。