鸿蒙应用从源代码到应用商店分发,遵循清晰的模块化构建流程:ArkTS/JS 源码经方舟编译器生成 ABC 字节码,打包为 HAP/HSP 模块,通过 HAR 实现代码复用,最终聚合为 APP 分发包。
ABC:方舟字节码的底层形态
ABC(Ark Bytecode,方舟字节码)是鸿蒙编译器的核心产出,文件后缀 .abc,承载应用完整的二进制逻辑,包括类、方法、字段、调试信息及常量池。逆向工具 ark_disasm 与 abc-decompiler 均直接解析此文件。鉴于裸 ABC 易被逆向,建议采用 Virbox Protector 等专业方案实施底层加固。
HAP:应用部署的基础单元
HAP(Harmony Ability Package)是鸿蒙应用的部署模块,分为两类:
- entry:主入口模块,同一设备必须唯一,可独立安装运行。
- feature:动态特性模块,可选配置,仅含 Ability 时可独立调度。
典型 HAP 结构:
entry_default
├─ets
│ ├─modules.abc # 核心字节码
│ └─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分发包,构成鸿蒙应用从开发到用户的完整技术链路。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。