Skip to content

MethodInvocationStub · 动态代理分发器 ​

MethodInvocationStub<T> 是 Hook 框架的分发器。它用 JDK 动态代理(Proxy.newProxyInstance)包住一个真实的服务接口,内部用 HookInvocationHandler 按方法名把调用路由到注册的 MethodProxy。所有 45 个服务代理的分发都靠它。

核心 API ​

方法作用
MethodInvocationStub(T baseInterface, Class<?>... proxyInterfaces)包装真实接口,生成代理
addMethodProxy(MethodProxy)注册一个方法代理(按 getMethodName() 索引)
removeMethodProxy(String name) / removeMethodProxy(MethodProxy)移除
getMethodProxy(String name)按名取代理
getAllHooks()取全部代理的 Map
getProxyInterface()取生成的代理对象(注入回 ServiceManager 的就是这个)
copyMethodProxies(MethodInvocationStub from)从另一个 stub 复制全部代理(版本切换时用)
setInvocationLoggingCondition(…)设置调用日志策略

HookInvocationHandler ​

内部类 HookInvocationHandler implements InvocationHandler 是真正的拦截核心:

注册表结构 ​

内部用 Map<String, MethodProxy> 按方法名索引。一个服务接口可能有几十个方法,每个被 hook 的方法注册一条;未注册的方法自动透传给真实接口,不影响。

关联 ​

基于 VirtualApp 与 epic,仅供学习研究。VirtualApp 禁止商用。