mirror of
https://github.com/openharmony/ability_form_fwk.git
synced 2026-08-24 07:47:15 -04:00
3091eb7606
一、数据模型新增 appIndex 字段(0=主应用,>0=分身) - FormRecord:运行时业务载体 - FormDBInfo:DB 持久化,含 JSON 序列化(ToJson/FromJson/Compare) - FormItemInfo:AddForm 流程传递载体 二、BMS 接口 - FormBmsHelper 新增 GetEnabledCloneIndex,基于 GetMainAndCloneBundleInfo 获取当前 enable 的分身 appIndex(产品约定每用户最多一个 enable; 若同时存在多个,优先取主应用) - 主应用索引常量复用 bundle_constants.h 的 Constants::MAIN_APP_INDEX, 替换全部魔法数字 0 - GetBundleInfoByFlags、GetApplicationInfo 迁移到 V9 flag 体系 (GetBundleInfoFlag/GetApplicationFlag),并新增 WITH_DISABLE flag, 分身被禁用时仍可查询 bundle 信息;GetApplicationInfoByFlag(bool) 替换为 GetApplicationInfo(ErrCode) 三、业务流程按 appIndex 过滤 - AddForm:查 BMS 获取 enable 分身 appIndex 写入 FormRecord - PACKAGE_REMOVED:分身卸载只删该分身卡片,主应用卸载删全部 - PACKAGE_CHANGED:升级刷新处理全量卡片(分身共享主应用 hap 包, BMS 不为分身发独立升级广播) - PACKAGE_DATA_CLEARED:事件不带实例标识,服务端反查 GetEnabledCloneIndex 解析当前 enable 实例后过滤;解析失败则整体跳过,不做全量误伤 - ReloadForms/ReloadAllForms:只刷新当前 enable 分身的卡片 - FormDbCache 查询/删除支持 appIndex 过滤 - ProcessBundleVersionMap:对账时对缺席 versionMap 的 bundle 用 GetBundleInfoByFlags 兜底确认真卸载,避免误清禁用 bundle 的 FormInfo (QueryExtensionAbilityInfosByType 跳过禁用且不可换 V9,详见设计文档 5.6) 四、可见性与查询 - 移除 FormVisibilityAdapter 中 instIndex!=0 一刀切拒绝逻辑 - HasFormVisible 增加 appIndex 精确匹配(instIndex 与 appIndex 同值) - GetFormInstancesByFilter 等接口按 appIndex 过滤并填充结果 - GetFormInstancesByFilter server 端解析 enable 分身 appIndex,不对外暴露; 填充 FormInstance.appIndex(字段上游既有) 五、调试 - FormDumpMgr dump 输出展示 appIndex AI[97%] Human Fixed[0%] Human[3%] AI Adopted[100%] Co-authored-by: claude (glm-5.2) <ai@local> Change-Id: I32aa148e7b732db7963cf3a19be26c68ce63da24 Signed-off-by: luyangyi <luyangyi2@huawei.com>