XPosed hook 类 中的静态成员是否在进程之间共享?

Are static members in XPosed hook classes shared between processes?

我是 Java 的新手,这是我认为 XPosed 的工作原理:

  1. 在 zygote_init 之前,钩住所有 api 并插入 xposed_before_xxx 和 xposed_after_xxx 方法(其中 xxx 是 api 的名称)。
  2. 加载模块。加载钩子class,实现它并保存在zygote的内存中。对于每个注入方法,将其添加到 xposed_before/after_xxx.
  3. 的私有列表中
  4. 当一个新的应用程序加载时(从 zygote 分叉),它也会分叉钩子 class 和钩子方法。
  5. 当应用程序调用xxx时,它实际上先运行xposed_before_xxx,后者调用其私有列表中的每个注入方法。然后调用原来的api。然后 xposed_after_xxx 被调用,并处理它自己的列表。

因此对于每个应用程序,钩子 class 在从 zygote 分叉后是单独的。因此,不共享静态成员。因为每个钩子 class 在应用程序中只有一个实例,静态成员与非静态成员的行为相同。我说得对吗?

感谢阅读我又长又烂的英语...

不,静态成员不跨进程共享。它们充当应用内的静态成员,而不是跨应用。

每个应用程序都在自己的 VM 上运行,因此进程之间不会共享任何内容。

同样适用于 Xposed 挂钩,您可以为一个应用程序挂钩一个静态方法,而不为其他应用程序挂钩。

即使您将模块设置为在所有应用程序上应用挂钩,这些挂钩也将是不同虚拟机中的不同实例。