EzXposed
libxposed API 102 的运行时入口。
推荐初始化顺序:
在
XposedModule.onModuleLoaded里调用 initOnModuleLoaded在
XposedModule.onPackageLoaded里调用 initOnPackageLoaded在
XposedModule.onPackageReady里调用 initOnPackageReady;需要在AppComponentFactory创建前安装 hook 时,改用 initOnPackageLoadedAsTargetReady 或onSystemServerStarting里调用 initOnSystemServerStarting通过 onTargetReady 注册「目标进程准备好后跑什么」
API 102 热重载不会自动重放 onModuleLoaded 或 package 生命周期回调。模块应在 onHotReloaded 中重新执行自己的运行时初始化(包括 initOnModuleLoaded 与 onTargetReady 注册), 再调用 handleHotReloaded 或 restoreHotReloadedAutomatically 恢复目标 snapshot。
行为约定:
base 在 initOnModuleLoaded 后可用
classLoader 在 initOnPackageReady、initOnPackageLoadedAsTargetReady 或 initOnSystemServerStarting 后代表当前进程反射环境
appContext 采用懒解析,期望指向目标进程 application;如果应用尚未创建,请改用 appContextOrNull 或稍后访问
modulePath / moduleRes 在 initOnModuleLoaded 后可用
默认热重载会把同步初始化中的 DSL/Java helper hook 按 executable、priority、exceptionMode 自动 聚合,并为物理 hook 分配稳定内部 ID;在 handleHotReloaded 成功重建后才清理遗留旧 handle, 通常无需逐条写 reloadKey(...)。同一组内的逻辑 hook 可增删重排,也允许新增或删除目标、 priority/exceptionMode 组及显式 hook ID。相同 executable + ID 的旧 hook 由 framework 单条原子替换, 新 hook 先安装,未继续声明的旧 hook 最后才移除。 需要跨大规模重排保持精确 identity 时使用 HotReloadSession 的显式 reloadKey(...); HookReloadBatch 和带 handleHotReloaded 的 onOldHooks 参数保留给自定义流程。
热重载是可选特性。hook ID、replaceHook 和热重载回调都是 libxposed API 102 才有的,运行在只实现 API 101 的 framework 上时(XposedFeature.HOT_RELOAD 不可用),本库会自动退化:不再分配 hook ID、 不再调用 setId,hook 安装与其它所有能力照常工作;无法降级的入口都标注了 RequiresXposedApi, 会明确报错。在 102 framework 上想主动关掉这套机制,把 hotReloadEnabled 设为 false。
Properties
当前进程的 application context;过早访问时会抛异常。
当前进程的 application context;尚未可用时返回 null。
当前默认 ClassLoader。
当前 framework 侧的 libxposed API 版本;base 尚未初始化时为 0。
framework 提供热重载(XposedFeature.HOT_RELOAD)且模块启用(hotReloadEnabled)时才为 true。
模块是否启用热重载。默认 true。
当前是否运行在 system_server。
当前模块 apk 路径;调用 initOnModuleLoaded 后可用。
当前模块资源;调用 initOnModuleLoaded 后可用。
当前包名。
当前进程名。
始终可用的 ClassLoader;未初始化时回退到 SystemClassLoader。
Functions
添加模块路径到目标 Context.resources。允许通过“R.xx.xxx”直接使用模块资源。
将模块资源路径注入到指定 resources。
对方法或构造器做去优化。
停止当前 module entry 的后续生命周期回调。
默认自动热重载的精简入口。
在覆写的 onHotReloading 里直接调用。
手动缓存当前进程的 application context。
初始化模块资源。
在 onModuleLoaded 阶段初始化运行时基础信息。
在 onPackageLoaded 阶段记录当前包名。
在 onPackageLoaded 阶段把目标标记为就绪,并立即触发 onTargetReady。
在 onPackageReady 阶段初始化可直接用于反射的 classLoader。
在 onSystemServerStarting 阶段初始化 system_server 的反射环境。
注册「目标进程准备好后跑什么」的回调。
执行默认自动热重载流程,并返回实际替换与清理数量。
注册「Application.attach(Context) 之后跑什么」的回调。