头图

鸿蒙应用从源代码到应用商店分发,遵循清晰的模块化构建流程:ArkTS/JS 源码经方舟编译器生成 ABC 字节码,打包为 HAP/HSP 模块,通过 HAR 实现代码复用,最终聚合为 APP 分发包。

ABC:方舟字节码的底层形态

ABC(Ark Bytecode,方舟字节码)是鸿蒙编译器的核心产出,文件后缀 .abc,承载应用完整的二进制逻辑,包括类、方法、字段、调试信息及常量池。逆向工具 ark_disasmabc-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分发包,构成鸿蒙应用从开发到用户的完整技术链路。


深盾安全
1 声望0 粉丝

深耕软件安全领域30载