鸿蒙应用技术链路全览:从ABC字节码到APP分发包
总览:从源码到上架的模块化之旅
鸿蒙应用采用分层递进的模块化构建体系:ArkTS/JS 源代码经方舟编译器转化为ABC字节码,打包成HAP/HSP模块,通过HAR实现代码复用,最终聚合为APP完成应用商店分发。这一流程清晰高效,支撑鸿蒙生态的灵活架构。
ABC:方舟编译器的二进制产出
ABC(Ark Bytecode,方舟字节码)是鸿蒙编译器的核心产物,文件后缀 .abc,承载应用完整的二进制逻辑表达,包含类、方法、字段、调试信息及常量池等全量数据。逆向工具 ark_disasm 与 abc-decompiler 均直接解析此文件。由于原始 ABC 文件可被直接逆向,核心算法面临泄露风险,建议采用 Virbox Protector 等专业方案实施底层加固。
HAP:应用部署的结构化模块
HAP(Harmony Ability Package)是鸿蒙应用的部署单元,整合代码、资源、Native库及配置,分为两类:
- entry:主入口模块,同一设备类型必须唯一,可独立安装运行。
- feature:动态特性模块,数量不限,仅含 Ability 时可独立调度。
典型 HAP 结构示例:
entry_default
├─ets
│ ├─modules.abc # ArkTS字节码
│ └─sourceMaps.map # 源码映射
├─libs/arm64-v8a/
│ └─libentry.so # Native动态库
├─resources/base/ # 资源目录
├─module.json # 模块配置
├─pack.info # 包属性
├─pkgContextInfo.json # 构建上下文
├─resources.index # 资源索引
└─.pages.info # 页面路由
pack.info 关键信息示例:
{
"summary": {
"app": {
"bundleName": "com.example.arks",
"version": {"code": 1000000, "name": "1.0.0"}
},
"modules": [{
"mainAbility": "EntryAbility",
"deviceType": ["phone", "tablet"],
"distro": {"moduleType": "entry"}
}]
}
}
开发部署命令:hdc install package_name.hap
HAR与HSP:双模代码共享机制
HAR(静态共享包)与 HSP(动态共享包)提供不同粒度的复用能力:
| 特性 | HAR(编译期复制) | HSP(运行时共享) |
|---|---|---|
| 体积影响 | 线性增加依赖方大小 | 应用内单实例,全局优化 |
| 加载行为 | 随主包启动同步加载 | 按需懒加载,加速启动 |
| 更新方式 | 强制随 HAP 版本同步 | 可独立热更新 |
| 适用场景 | 基础组件、工具类 | 业务插件、大型模块 |
HAR 构建时物理复制到依赖模块,无法独立部署,权限自动合并。HSP 与宿主同进程、同包名,支持应用内及组织间跨应用共享。
APP:应用商店的上架实体
APP 文件是鸿蒙市场的唯一分发格式,聚合所有 HAP/HSP 模块及签名信息,必须使用正式发布证书。标准应用至少包含一个 entry 模块,按需叠加 feature 模块。
完整技术流转
源码 → ABC字节码 → HAP/HSP模块 → HAR复用 → APP分发包,构成鸿蒙应用从开发到用户的全链路闭环。

浙公网安备 33010602011771号