LSPlant 是什么:LSPosed 项目下的 ART Hook 库
FPA 的介绍里总挂着两个引擎名,LSPlant 排在前面。它不是 FPA 的附属品,而是一个有独立身世的正式项目。
出身:LSPosed 项目的一部分
LSPlant 是 LSPosed 框架项目下的 ART Hook 库,以 LGPL 协议开源。所谓 ART Hook,就是针对安卓应用运行时(ART 虚拟机)的 Java 方法拦截技术——把对目标方法的调用替换成自己的回调,这是所有 Xposed 类框架的底层根基。
官方能力清单
LSPlant 项目页列出的特性,解释了 FPA 为什么敢主打高版本安卓:
- 支持 Android 5.0 – 17(API 21 – 37)——覆盖面一直跟到最新系统;
- 支持 armeabi-v7a、arm64-v8a、x86、x86-64、riscv64 多架构——与 FPA 包含 v7a/arm64 两个架构的口径对得上;
- 支持自定义 inline hook 框架与 ART 符号解析器——灵活适配不同设备的运行时环境;
- 提供 Java 方法 Hook/Unhook 与内联去优化(inline deoptimization)。
它在 FPA 里的角色
FPA 把框架代码打进目标应用包后,真正执行「钩住 Java 方法」这件事的就是 LSPlant:模块想改某个功能点,最终都落到「替换某个 Java 方法」的操作上,由 LSPlant 完成。可以说 FPA 的兼容性上限,很大程度由 LSPlant 的系统适配面决定(两者的关系见开源与底层)。
与另一个引擎的分工
FPA 的名字里 LSPlant 与 Pine 并列——两者都是 Java 方法 Hook 库,在框架内共同承担 Hook 任务。Pine 的身世与特点见Pine 引擎;想看这两个引擎被如何组织进免 Root 流程,读免 Root 注入的原理。