name: datashare-general description: 本技能专为 OpenHarmony Datashare 模块代码分析和问题定位设计。
Datashare 模块代码 Skill
技能描述
本技能专为 OpenHarmony Datashare 模块代码分析和问题定位设计。Datashare 是 OpenHarmony 的数据共享模块,支持同个设备上不同应用之间的数据共享。
本技能提供代码仓清单、架构文档和问题定位指南,帮助 agent 高效定位问题和辅助开发。
核心能力:
- Datashare 客户端/服务端实现
- DataObs 数据观察者(数据订阅和变更通知)
- 应用间配置共享(Share-Config):支持应用间配置数据的发布、访问和变更通知
代码仓管理原则
核心原则:按需拉取、自动管理
| 场景 | 操作 |
|---|---|
| 首次使用 | 拉取核心仓 |
| 代码仓不存在 | 拉取对应仓 |
| 需要最新代码 | 更新对应仓 |
| 用户提到代码变更 | 更新对应仓 |
| 分析错误日志但代码不匹配 | 更新核心仓 |
agent 应检查代码仓是否存在,根据问题需要决定拉取哪些仓,不是每次都拉取所有仓。
核心代码仓
| 仓名 | GitCode 地址 | 说明 |
|---|---|---|
| distributeddatamgr_data_share | https://gitcode.com/openharmony/distributeddatamgr_data_share | DataShare 客户端实现 + Provider 端(DataShareExtAbility) |
| distributeddatamgr_datamgr_service | https://gitcode.com/openharmony/distributeddatamgr_datamgr_service | 分布式数据管理服务(包含 DataShare Service) |
| ability_ability_runtime | https://gitcode.com/openharmony/ability_ability_runtime | DataObs(数据观察者),提供数据订阅和变更通知能力 |
完整仓清单见 repositories.md。
架构概览
静默访问架构
应用 (DataShareHelper)
↓
DataShare Service
↓
RDB(数据存储)
非静默访问架构
应用 A (DataShareHelper)
↓ IPC
应用 B (DataShareExtAbility)
↓
RDB(数据存储)
详细架构见 docs/architecture.md。
静默访问 vs 非静默访问
Datashare 支持两种数据访问模式:
静默访问 (Silent Access)
特点:
- 无需实现 DataShareExtensionAbility
- 由 DataShare Service 直接管理数据
- 适用于简单的数据共享场景
数据流:
应用 → DataShareHelper → DataShare Service → RDB(数据存储)
非静默访问 (Non-Silent Access)
非静默访问通过 DataShareExtensionAbility 实现。
特点:
- 需要实现并配置 DataShareExtensionAbility
- 数据提供方可以自定义业务逻辑
- 支持更细粒度的权限控制
数据流:
应用 A (DataShareHelper) → IPC → 应用 B (DataShareExtAbility) → RDB(数据存储)
详细说明见 docs/architecture.md。
适用场景
- 错误码分析:根据错误码/错误日志定位问题
- 新功能开发:在 Datashare 模块上添加新功能
- 代码阅读:理解 Datashare 模块的架构和实现
- 问题排查:分析数据共享相关的 IPC 通信、权限、数据库等问题
核心参考
核心接口文件
说明:以下为仓内相对路径,根据仓名在本地对应仓库中查找。
| 接口 | 仓名 | 文件路径 |
|---|---|---|
| DataShareHelper | distributeddatamgr_data_share | frameworks/native/consumer/include/datashare_helper.h |
| DataShareExtAbility | distributeddatamgr_data_share | frameworks/native/provider/include/datashare_ext_ability.h |
| 错误码 | distributeddatamgr_data_share | interfaces/inner_api/common/include/datashare_errno.h |
| ResultSet | distributeddatamgr_data_share | interfaces/inner_api/common/include/basic/result_set.h |
| DataObsManager | ability_ability_runtime | interfaces/inner_api/dataobs_manager/include/dataobs_mgr_client.h |
| IDataAbilityObserver | ability_ability_runtime | interfaces/inner_api/dataobs_manager/include/data_ability_observer_interface.h |
| DataProxyHandle (配置共享) | distributeddatamgr_data_share | frameworks/native/consumer/include/datashare_helper.h |
URI 格式
静默访问:datashareproxy://<bundleName>/<dataKey>
非静默访问:datashare://<bundleName>/<extensionAbilityName>/<dataKey>
配置共享:datashareproxy://<bundleName>/<path>
日志 Domain
DataShare: 0xD001651
DataObs: 0xD001312
日志分析方法见 docs/troubleshooting.md。
构建命令
构建命令见 docs/build_guide.md。
快速参考
| 文档 | 路径 |
|---|---|
| 配置共享特性 | docs/share_config.md |
| └─ C++ 接口实现 | docs/implementation/config_data/cpp_interfaces.md |
| └─ 权限校验 | docs/implementation/config_data/permission_check.md |
| └─ 数据存储 | docs/implementation/config_data/storage_structure.md |
| └─ 静态配置加载 | docs/implementation/config_data/static_config_loading.md |
| 问题定位 | docs/troubleshooting.md |
| 架构详解 | docs/architecture.md |
| 代码结构 | docs/code_structure.md |
| 构建指南 | docs/build_guide.md |
| 代码仓清单 | repositories.md |
官方文档
在线文档
本地文档
拉取 docs 仓后,文档位于:docs/zh-cn/application-dev/database/
git clone https://gitcode.com/openharmony/docs.git
问题定位指南见 docs/troubleshooting.md。