HookReloadBatch
API 102 的批次聚合式热重载协调器。
HotReloadSession 适合新模块:每条 hook 都显式声明稳定的 reloadKey(...)。本类适合已有的大型 规则集:把一次完整、同步的目标进程初始化包进 install,其中未设置 hook ID 的 EzHookTool DSL hook 会按 executable + priority + exceptionMode 聚合成一个带稳定内部 hook ID 的底层 hook。
新 generation 重新执行同一初始化批次时,framework 会逐个原子替换每个聚合后的底层 hook。因此规则可以 在不为每条既有 hook 补写 reloadKey 的情况下新增、删除或调整回调及目标。显式调用 io.github.lingqiqi5211.ezhooktool.xposed.dsl.HookFactory.id 或 reloadKey(...) 的 hook 不会被聚合, 仍按官方 executable + hook ID 语义原子替换。
使用约束:
一个 module entry、一个目标进程初始化周期只创建一个 batch,并只调用一次 install。
install 必须包住所有会注册 hook 的同步初始化代码;异步或初始化完成后才创建的 hook 不属于本批次, 应改为同步安装,或使用默认自动模式 / 显式
reloadKey自行定义收尾边界。新 generation 必须先在旧 handle 仍有效时调用 captureOldHooks,再执行 install,最后调用 finishHotReload。不要与同一批 hook 的 HotReloadSession 混用。
本类只管理 EzHookTool API 102 DSL/Java helper 创建的 hook。直接调用 libxposed 或旧 Xposed API 的 hook 不会自动进入批次,应迁移到 helper,或在热重载前主动拒绝。
内部聚合 ID 以 ezhooktool.batch.v1: 开头,属于本库保留命名空间。