Recon: appspawn 仓库结构发现
1. 项目标识
- 名称: appspawn
- 仓库路径:
base/startup/appspawn
- 版本控制: Git
2. 目录树(前3层,排除 test/.git/doc)
appspawn/
├── common/
│ ├── appspawn_server.c
│ ├── appspawn_server.h
│ ├── appspawn_trace.cpp
│ └── appspawn_trace.h
├── docs/
│ ├── modules/
│ │ └── module_*.md (12 个模块详情)
│ ├── architecture.md
│ ├── decomposition.md
│ ├── index.md
│ ├── quality_report.md
│ └── recon.md
├── etc/
│ └── sandbox/
├── figures/
├── interfaces/
│ └── innerkits/
│ ├── client/
│ ├── dec_util/
│ ├── hnp/
│ ├── include/
│ └── permission/
├── lite/
│ ├── appspawn_message.c
│ ├── appspawn_message.h
│ ├── appspawn_process.c
│ ├── appspawn_service.c
│ ├── appspawn_service.h
│ └── main.c
├── modules/
│ ├── ace_adapter/
│ ├── asan/
│ ├── common/
│ ├── module_engine/
│ │ ├── include/
│ │ └── stub/
│ ├── modulemgr/
│ ├── native_adapter/
│ ├── nweb_adapter/
│ ├── sandbox/
│ │ └── normal/
│ ├── spm/
│ └── sysevent/
├── service/
│ ├── devicedebug/
│ │ ├── base/
│ │ └── kill/
│ └── hnp/
│ ├── base/
│ ├── installer/
│ └── pack/
├── standard/
│ ├── appspawn_appmgr.c
│ ├── appspawn_fd_manager.c
│ ├── appspawn_fd_manager.h
│ ├── appspawn_kickdog.c
│ ├── appspawn_kickdog.h
│ ├── appspawn_main.c
│ ├── appspawn_manager.h
│ ├── appspawn_msgmgr.c
│ ├── appspawn_service.c
│ ├── appspawn_service.h
│ └── pid_ns_init.c
├── util/
│ ├── include/
│ └── src/
├── BUILD.gn
├── appspawn.gni
├── appspawn.cfg
├── appspawn.rc
├── bundle.json
├── appdata-sandbox*.json (多个沙箱配置)
├── appspawn_preload.json
└── README_zh.md
3. 文件统计
| 扩展名 |
文件数 |
估计代码行数 |
| .c |
43 |
~6,804 |
| .h |
43 |
(含在上述中) |
| .cpp |
19 |
~21,697 |
| .gn |
20 |
未统计 |
| .gni |
3 |
未统计 |
| .json |
16 |
配置文件 |
| .xml |
1 |
OAT.xml |
| .py |
1 |
脚本 |
总代码行数(.c + .h + .cpp): ~28,501 行
4. 构建系统
- 构建系统: GN/Ninja (OpenHarmony 标准构建系统)
- 构建配置文件:
BUILD.gn(根目录及各子目录),appspawn.gni(全局变量定义)
- bundle描述:
bundle.json
- 编译选项定义:
appspawn.gni 定义了 appspawn_innerkits_path、appspawn_path 等路径变量
- 条件编译标志:
WITH_SELINUX、WITH_SECCOMP、CUSTOM_SANDBOX、NORMAL_SANDBOX、ALLOW_DUMPABLE
5. 编程语言
- 主语言: C (43 .c 文件) 和 C++ (19 .cpp 文件)
- 头文件: 43 .h 文件
- 领域特定语言: GN 构建脚本 (.gn/.gni), JSON 配置文件 (沙箱配置、预加载配置等)
- 脚本: Python (1 文件)
6. 顶层目录描述
| 目录 |
文件数 |
描述 |
| common/ |
4 |
通用服务端代码(服务注册、trace 追踪) |
| docs/ |
30+ |
代码知识库(架构/模块详情/质量报告) |
| etc/ |
6 |
沙箱配置等 etc 文件 |
| figures/ |
- |
README 图片资源 |
| interfaces/ |
15 |
对外接口:客户端 API、HNP API、权限接口 |
| lite/ |
7 |
小型系统 appspawn 实现 |
| modules/ |
62 |
模块化组件:沙箱、SPM、适配器、模块引擎等 |
| service/ |
26 |
独立服务:HNP(原生包管理)、设备调试 |
| standard/ |
12 |
标准系统 appspawn 核心实现 |
| util/ |
8 |
工具类:错误码、JSON 工具、parcel 工具 |
7. 关键文件
| 文件路径 |
说明 |
standard/appspawn_main.c |
标准系统 appspawn 主入口 |
standard/appspawn_service.c |
标准系统核心服务实现 |
standard/appspawn_msgmgr.c |
消息管理器,处理 IPC 请求 |
standard/appspawn_manager.h |
核心管理器头文件,定义关键数据结构 |
lite/main.c |
小型系统 appspawn 主入口 |
lite/appspawn_service.c |
小型系统服务实现 |
interfaces/innerkits/include/appspawn.h |
对外公共 API 头文件 |
interfaces/innerkits/client/appspawn_client.c |
客户端实现 |
interfaces/innerkits/client/appspawn_msg.c |
客户端消息构造 |
modules/modulemgr/appspawn_modulemgr.c |
模块管理器 |
modules/module_engine/include/appspawn_hook.h |
Hook 机制头文件 |
modules/sandbox/normal/sandbox_core.cpp |
沙箱核心逻辑 |
modules/spm/spm.c |
SPM(软件包管理器)权限管理 |
appspawn.gni |
全局构建变量定义 |
BUILD.gn |
根构建文件 |
bundle.json |
OpenHarmony 部件描述文件 |
appspawn.cfg |
appspawn 服务配置(init 脚本) |
appdata-sandbox.json |
沙箱配置(主文件) |
appspawn_preload.json |
预加载库配置 |