BMS 代码导航
使用此 skill 在动手修改前快速判断 BundleManager 需求应该落在哪些文件和模块。
工作流程
-
先按入口面分类:
- Public/native/JS/CJ/ANI API:从
interfaces/开始。 - 服务侧行为:从
services/bundlemgr/include/和services/bundlemgr/src/开始。 - 安装、更新、卸载流程:从
services/bundlemgr/src/下的 installer 相关文件开始。 - 特权文件操作:检查 Installs 进程和 IPC,重点看
services/bundlemgr/include/ipc/、services/bundlemgr/src/ipc/、services/bundlemgr/src/installd/。 - 持久化或查询状态:先看
BundleDataMgr,再看 RDB 封装。 - 特定功能行为:进入
services/bundlemgr/src/下对应功能子目录。 - 测试:优先在
services/bundlemgr/test/或test/中找对应组件已有测试。
- Public/native/JS/CJ/ANI API:从
-
阅读
references/code-map.md,确认核心路径和模块职责。 -
使用
references/search-recipes.md中的rg命令和符号搜索模式。 -
优先模仿邻近实现,不要凭空创造新模式。遵循现有头文件/源文件配对和 GN target 组织方式。
导航规则
- 始终同时查声明和实现。很多服务类的头文件在
services/bundlemgr/include/,实现文件在services/bundlemgr/src/。 - 涉及 IPC 时,同时检查 interface、proxy、host、host implementation 和 enum code 文件。
- 涉及功能开关时,先看
appexecfwk.gni和services/bundlemgr/appexecfwk_bundlemgr.gni,不要假设代码一定参与构建。 - 涉及用户维度时,搜索
userId、Constants::ALL_USERID、GetCurrentUserId或调用方 UID 检查。 - 涉及数据变更时,同时检查序列化、RDB 存储、内存态
InnerBundleInfo和测试。 - 涉及安装路径时,保持权限边界清晰:Foundation 进程控制流程,Installs 进程执行特权文件系统操作。
参考资料
references/code-map.md:核心文件、模块地图、测试地图。references/search-recipes.md:本仓库常用搜索命令。