鸿蒙应用技术链路全览:从ABC字节码到APP分发包

总览:从源码到上架的模块化之旅

鸿蒙应用采用分层递进的模块化构建体系:ArkTS/JS 源代码经方舟编译器转化为ABC字节码,打包成HAP/HSP模块,通过HAR实现代码复用,最终聚合为APP完成应用商店分发。这一流程清晰高效,支撑鸿蒙生态的灵活架构。

ABC:方舟编译器的二进制产出

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

posted @ 2025-11-14 10:56  VirboxProtector  阅读(12)  评论(0)    收藏  举报