Datashare 代码结构详解
本文档详细描述各代码仓的目录结构、核心文件位置和能力说明。
distributeddatamgr_data_share(客户端 + Provider 端)
代码结构:
data_share/
├── frameworks/
│ ├── js/napi/ # JS NAPI 绑定
│ └── native/
│ ├── common/ # 公共代码
│ ├── consumer/ # 消费者实现(DataShareHelper)
│ └── provider/ # 提供者实现(DataShareExtAbility)
├── interfaces/inner_api/
│ ├── common/ # 公共头文件(错误码、ResultSet 等)
│ ├── consumer/ # 消费者头文件
│ └── provider/ # 提供者头文件
└── test/ # 测试代码
核心文件:
| 文件 | 路径 | 说明 |
|---|---|---|
| DataShareHelper | frameworks/native/consumer/include/datashare_helper.h |
客户端帮助类,提供增删改查接口 |
| DataShareExtAbility | frameworks/native/provider/include/datashare_ext_ability.h |
Provider 端基类 |
| 错误码 | interfaces/inner_api/common/include/datashare_errno.h |
错误码定义 |
| ResultSet | interfaces/inner_api/common/include/basic/result_set.h |
结果集接口 |
核心能力:
- 消费者(Consumer):提供 DataShareHelper,支持增删改查、观察者注册、文件操作等
- 提供者(Provider):提供 DataShareExtAbility,实现数据提供方的业务逻辑
- ResultSet:共享内存结果集,避免 IPC 大数据传输
distributeddatamgr_datamgr_service(服务端)
代码结构:
datamgr_service/
└── services/distributeddataservice/
├── adapter/ # 适配器层(Account、Communicator、DFX 等)
├── app/ # 应用层(Feature 管理系统)
├── framework/ # 框架层(AutoCache、MetaDataManager、EventCenter 等)
└── service/ # 服务层
├── data_share/ # DataShare 功能
├── rdb/ # RDB 功能
├── kvdb/ # KVDB 功能
└── ...
核心文件:
| 文件 | 路径 | 说明 |
|---|---|---|
| IDataShareService | services/distributeddataservice/service/data_share/idata_share_service.h |
服务接口 |
| DataShareServiceImpl | services/distributeddataservice/service/data_share/data_share_service_impl.h |
服务实现 |
核心能力:
- 静默访问数据库操作:直接管理数据,无需 ExtensionAbility
- 数据代理:支持卡片等场景的数据代理访问
- 配置共享:支持应用间配置数据的共享
构建命令:
./build.sh --product-name <product> --gn-flags='--export-compile-commands' \
--build-target foundation/distributeddatamgr/datamgr_service/services/distributeddataservice/service/data_share:data_share_service
ability_ability_runtime(DataObs)
代码结构:
ability_ability_runtime/
├── interfaces/inner_api/dataobs_manager/
│ ├── include/
│ │ ├── dataobs_mgr_client.h # DataObs 客户端
│ │ ├── data_ability_observer_interface.h # 观察者接口
│ │ └── ...
│ └── src/
│ └── dataobs_mgr_client.cpp
├── services/dataobsmgr/
│ ├── include/
│ │ ├── dataobs_mgr_service.h # DataObs 服务
│ │ └── ...
│ └── src/
│ ├── dataobs_mgr_service.cpp
│ └── ...
└── test/
核心文件:
| 文件 | 路径 | 说明 |
|---|---|---|
| DataObsManager | interfaces/inner_api/dataobs_manager/include/dataobs_mgr_client.h |
客户端,提供注册/注销观察者、发布数据变更的能力 |
| IDataAbilityObserver | interfaces/inner_api/dataobs_manager/include/data_ability_observer_interface.h |
观察者接口,定义 OnChange() 回调 |
| DataObsService | services/dataobsmgr/include/dataobs_mgr_service.h |
服务端实现 |
核心能力:
- 数据订阅:通过
RegisterObserver注册观察者,订阅特定 URI 的数据变更 - 变更通知:通过
NotifyChange通知所有订阅该 URI 的观察者 - 跨进程通知:支持跨应用的数据变更通知
构建命令:
./build.sh --product-name <product> --gn-flags='--export-compile-commands' \
--build-target foundation/ability/ability_runtime/services/dataobsmgr:dataobsms
与 Datashare 的关系:
- DataShare 依赖 DataObs 实现数据变更通知
- DataShareHelper 通过 DataObsManager 注册观察者
- 数据变更时,DataShare 调用 DataObs 通知所有注册的观察者
相关文档:
- 代码仓清单 - 完整依赖仓列表(按需查阅)