Files
ability_ability_runtime/CLAUDE.md
T
duansizhao 9c3ef089c3 add upms claude.md
Signed-off-by: duansizhao <duansizhao@huawei.com>
2026-03-21 21:40:43 +08:00

318 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CLAUDE.md
本文件为 Claude Code (claude.ai/code) 在此代码库中工作时提供指导。
## 概述
这是 OpenHarmony 的 **ability_runtime** 组件(元能力运行时)。它提供核心组件框架,用于管理应用生命周期、组件调度和扩展组件管理。
### 开发者框架
**UIAbility 组件**
- 提供应用界面的核心组件
- 支持多实例、多窗口模式
- 完整的生命周期管理(onStart、onForeground、onBackground、onStop
**Extension 扩展组件**
- ServiceExtension:后台服务扩展
- UIExtensionUI 扩展组件
- UIServiceExtensionUI 服务扩展
- AppServiceExtension:应用服务扩展
- DataShareExtension:数据共享扩展
**Uri 授权**
- 跨应用 URI 访问权限管理
- URI 权限授予和撤销
- 安全的跨进程数据访问
**意图框架 (InsightIntent)**
- 系统级意图标准体系,连接应用内的业务功能
- 智能意图识别和分发,支持意图匹配和路由
- 跨应用意图调度,实现应用间智能协同
- 帮助开发者将应用内的业务功能智能化
- 支持配置和装饰器两种方式开发意图
**启动框架**
- 应用启动流程管理
- 启动模式和启动规则控制
- 冷启动、热启动优化
**自动填充框架**
- 表单自动填充支持
- 跨应用数据填充
**子进程**
- 子进程创建和管理
- 父子进程通信
- 进程隔离和资源控制
**应用上下文环境**
- 提供应用级别和组件级别的上下文
- 支持获取应用信息、资源访问、权限管理
- 提供应用级数据共享和通信能力
**系统环境变化监听**
- 配置变化监听(系统语言、主题、方向等)
- 内存级别变化监听
- 系统状态变化监听
**组件生命周期监听**
- UIAbility 生命周期状态变化监听
- Extension 组件生命周期状态变化监听
- 进程生命周期监听
**任务管理**
- 任务栈管理
- 多任务切换
- 任务持久化和恢复
### 系统服务
**组件管理服务**
- 管理 UIAbility 和 Extension 组件生命周期
- 组件启动/停止、连接管理
- 任务栈和任务列表管理
- 与应用管理服务协调进行进程管理
**应用管理**
- 应用进程生命周期管理
- 与 AppSpawn 服务协调应用孵化
- 应用状态管理(前台、后台)
- 进程状态上报、子进程管理、进程预加载
- 应用恢复和重启
**快速修复**
- 应用热修复能力
- 补丁管理和应用
- 无需重启的修复机制
## 构建系统
本项目使用 **GN (Generate Ninja)** 作为构建系统。
### 构建命令
```bash
# 构建整个 ability_runtime 组件
./build.sh --product-name <product> --build-target ability_runtime
# 构建特定目标:以abilityms为例
./build.sh --product-name <product> --build-target abilityms
# 构建全量tdd测试用例
./build.sh --product-name <product> --build-target ability_runtime_test
# 构建特定TDD用例:以 ability_manager_service_first_test 为例
./build.sh --product-name <product> --build-target ability_manager_service_first_test
```
### 清理构建
```bash
./build.sh --product-name <product> --build-target ability_runtime --clean
```
## 测试
### 单元测试
单元测试位于 `test/unittest/` 并按组件组织。
```bash
# 运行所有单元测试
run -t UT -tp ability_runtime
# 运行特定测试(示例:ability_manager_service_first_test 测试)
run -t UT -ts ability_manager_service_first_test
```
### 模块测试
位于 `test/moduletest/`,以 ability_caller_fw_module_test 为例:
```bash
run -t UT -ts ability_caller_fw_module_test
```
### Fuzz 测试
位于 `test/fuzztest/`, 以 AbilityAppDebugInfoFuzzTest 为例:
```bash
run -t UT -ts AbilityAppDebugInfoFuzzTest
```
## 架构
### 目录结构
```
ability_runtime/
├── frameworks/ # 框架实现
│ ├── native/ # C++ 原生框架(ability contextextensions
│ ├── js/napi/ # JavaScript NAPI 绑定
│ ├── ets/ # ETS/ArkTS 绑定(ani - arkts native interface
│ ├── cj/ # CJ (C-based JSON) FFI 绑定
│ └── c/ # ability_runtime 的 C API
├── interfaces/ # 公共接口
│ ├── inner_api/ # 内部组件接口(IPC、客户端)
│ └── kits/ # 公共 SDK 接口(native、C
├── services/ # 系统服务
│ ├── abilitymgr/ # AbilityManagerService
│ ├── appmgr/ # AppManagerService
│ ├── dataobsmgr/ # DataObserverManager
│ ├── uripermmgr/ # UriPermissionManager
│ ├── quickfixmgr/ # QuickFix 管理器
│ └── dialog_ui/ # 系统对话框 HAP
├── agent_runtime_framework/ # Agent 组件框架
├── service_router_framework/ # 服务路由框架
├── js_environment/ # JS 运行时环境
├── ets_environment/ # ETS 运行时环境
├── cj_environment/ # CJ 运行时环境
├── tools/aa/ # "aa" 命令行工具
└── test/ # 测试(unittest、moduletest、fuzztest
```
### 核心组件
#### AbilityManagerService
位于 `services/abilitymgr/`,这是核心系统能力,负责:
- 启动和停止组件
- 管理组件生命周期(onStart、onForeground、onBackground、onStop
- 处理组件连接(connectAbility、disconnectAbility
- 管理任务栈和任务列表
- 与 AppManagerService 协调进行进程管理
主要子管理器:
- `AbilityConnectManager`:Extension 扩展组件连接和生命周期管理
- `DataAbilityManager`Data Ability 管理
- `MissionListManager`:任务/任务栈管理(需要图形支持)
- `PendingWantManager`:待定意图/Want 管理
- `FreeInstallManager`:免安装(按需)组件支持
- `KioskManager`Kiosk 模式管理
- `AutoStartupService`:自动启动组件管理
#### AppManagerService
位于 `services/appmgr/`,负责管理:
- 应用进程生命周期
- 与 AppSpawn 服务协调应用孵化
- 应用状态(前台、后台)
- 进程状态上报、子进程管理、进程预加载
- 应用恢复和重启
#### 框架层
**Native 框架** (`frameworks/native/`)
- `ability/native/`Ability、AbilityContext、extensions 实现
- `appkit/`Application、AbilityStage、TestRunner
- `child_process/`:子进程管理
**NAPI 层** (`frameworks/js/napi/`)
- JavaScript/TypeScript 应用的绑定
- 模块:ability、abilityManager、appManager、context、wantAgent 等
**ANI 层** (`frameworks/ets/``frameworks/ets/ets/`)
- ArkTS 原生接口绑定
- ETS 特定的性能优化实现
**CJ 层** (`frameworks/cj/`)
- 面向云的语言 (CJ) FFI 绑定
- 与 Ark 运行时的互操作
### 两种应用模型
此代码库同时支持 FAFeature Ability)和 Stage 模型:
**FA 模型**API 8 及更早版本):
- 使用 `config.json` 进行模块配置
- PageAbility、ServiceAbility、DataAbility、FormAbility
- 每个 Ability 有自己独立的 JS VM 实例
**Stage 模型**API 9+):
- 使用 `module.json5` 进行模块配置
- Ability (UIAbility)、ExtensionAbility 系列
- 每个进程共享 JS VM 实例
- 更好地支持复杂应用和分布式场景
## 开发说明
### 添加新的 Ability 或 Extension
1.`interfaces/kits/native/` 中定义扩展类型
2.`frameworks/native/ability/native/` 中实现
3.`frameworks/ets/ani/` 中添加 ANI 绑定
4.`frameworks/js/napi/` 中添加 NAPI 绑定
5.`services/abilitymgr/` 中添加服务端管理
6. 更新 BUILD.gn 文件
7.`test/unittest/` 中添加测试
### 特性标志
特性标志在 `ability_runtime.gni` 中定义:
- `ability_runtime_auto_fill`:自动填充扩展支持
- `ability_runtime_child_process`:子进程支持
- `ability_runtime_ui_service_extension`UI 服务扩展
- `ability_runtime_photo_editor_extension`:照片编辑器扩展
- `ability_runtime_graphics`:图形依赖特性(任务栈)
- `ability_runtime_screenlock_enable`:锁屏集成
添加条件特性时请检查这些标志。
### 错误处理
- 使用在 `interfaces/inner_api/error_utils/` 中定义的 `ERR_*` 错误码
- 常见错误:`ERR_OK``ERR_NO_INIT``ERR_INVALID_VALUE``ERR_INVALID_CALLING`
- 业务错误在 `frameworks/native/ability/native/ability_business_error.h`
### 日志记录
使用 HiLog 进行日志记录,已封装在hilog_tag_wrapper.h文件中。
```cpp
#include "hilog_tag_wrapper.h"
// LABEL定义在AAFwkLogTag 如AAFwkLogTag::ABILITY
TAG_LOGI(LABEL, "Message: %{public}d", value);
```
### aa 命令
`aa` 工具(`tools/aa/`)是 Ability 管理命令行工具,用于调试和管理 Ability 组件。
#### 常用命令
```bash
# 启动 Ability
aa start -a <ability-name> -b <bundle-name> [-D]
# 查询并输出系统信息
aa dump -a
# 强制停止应用进程
aa force-stop <bundle-name>
```
## 配置
### 应用模块配置
- FA 模型:`entry/src/main/config.json`
- Stage 模型:`entry/src/main/module.json5`
### 系统服务配置
- 系统服务配置文件:`services/sa_profile/`
## 依赖项
主要依赖项(在 `bundle.json` 中定义):
- `ability_base`Ability 基础工具
- `bundle_framework`Bundle 管理
- `eventhandler`:事件处理
- `ipc`IPC/RPC 通信
- `samgr`:系统能力管理器
- `hilog`:日志记录
- `window_manager`:窗口管理
- `ace_engine`ArkUI 引擎
- `ets_runtime`ETS 运行时
- `napi`NAPI 框架