📚 libxposed API 完整参考文档 (中文版)

📖 目录 (点击类名跳转,点击类标题展开详情)

📦 包 io.github.libxposed.api

🔌 interface XposedInterface 核心接口

Xposed 框架提供给模块操作应用进程的核心接口。

📌 嵌套接口摘要
接口描述
XposedInterface.Chain方法或构造函数的拦截器链
XposedInterface.CtorInvoker<T>构造函数的调用器
XposedInterface.ExceptionModeHook 异常处理模式枚举
XposedInterface.HookBuilderHook 配置构建器
XposedInterface.HookerHooker 接口
XposedInterface.HookHandleHook 句柄
XposedInterface.Invoker<T,U>通用调用器
📌 字段常量
常量描述
API_101101第一个 API 版本,且模块不能注入 zygote,只在作用域进程内加载。
LIB_API101此库的 API 版本,模块应使用 getApiVersion() 检查运行时版本。
PROP_CAP_SYSTEM1<<0框架有能力 Hook system_server 和其他系统进程。
PROP_CAP_REMOTE1<<1框架提供远程配置和远程文件支持。
PROP_RT_API_PROTECTION1<<32禁止通过反射或动态加载的代码访问 Xposed API。
PRIORITY_DEFAULT50默认优先级
PRIORITY_LOWEST0链末尾执行
PRIORITY_HIGHEST100链开头执行
⚙️ 方法详细说明
default int getApiVersion()

获取运行时 Xposed API 版本。框架实现不应重写此方法。

@NonNull String getFrameworkName()

获取当前 Xposed 框架实现的名称。

@NonNull String getFrameworkVersion()

获取当前 Xposed 框架实现的版本字符串。

long getFrameworkVersionCode()

获取当前 Xposed 框架实现的版本号(长整型)。

long getFrameworkProperties()

获取 Xposed 框架属性 (PROP_CAP_* 和 PROP_RT_*)。

@NonNull HookBuilder hook(@NonNull Executable origin)

Hook 一个普通方法或构造函数。

@NonNull HookBuilder hookClassInitializer(@NonNull Class<?> origin)

Hook 类的静态初始化器 <clinit>。如果类已初始化,Hook 不会被调用。

boolean deoptimize(@NonNull Executable executable)

去优化一个方法/构造函数,解决因内联导致 Hook 不生效的问题。

@NonNull Invoker<?, Method> getInvoker(@NonNull Method method)

获取方法调用器(绕过访问检查,默认 FULL)。

@NonNull <T> CtorInvoker<T> getInvoker(@NonNull Constructor<T> constructor)

获取构造函数调用器(绕过访问检查,默认 FULL)。

void log(int priority, @Nullable String tag, @NonNull String msg)

向 Xposed 日志写入消息。

void log(int priority, @Nullable String tag, @NonNull String msg, @Nullable Throwable tr)

向 Xposed 日志写入带异常的消息。

@NonNull ApplicationInfo getModuleApplicationInfo()

获取模块自身的 ApplicationInfo。

@NonNull SharedPreferences getRemotePreferences(@NonNull String group)

获取远程配置(在被 Hook 应用中只读)。支持 UnsupportedOperationException。

@NonNull String[] listRemoteFiles()

列出模块共享数据目录下的所有文件。

@NonNull ParcelFileDescriptor openRemoteFile(@NonNull String name) throws FileNotFoundException

只读方式打开模块共享文件,文件名不能包含路径分隔符和 . .. 。

⛓️ interface XposedInterface.Chain

拦截器链,代表一次方法或构造函数的调用。Chain 对象不能跨线程共享,也不能在 intercept 结束后重用。

方法详细说明
@NonNull Executable getExecutable()
Object getThisObject() — 返回 this 指针(静态方法返回 null)
@NonNull List<Object> getArgs() — 不可变的参数列表
Object getArg(int index) throws IndexOutOfBoundsException, ClassCastException
Object proceed() throws Throwable — 使用相同 this 和参数继续链
Object proceed(@NonNull Object[] args) throws Throwable — 替换参数继续链
Object proceedWith(@NonNull Object thisObject) throws Throwable — 替换 this 继续链(静态不可用)
Object proceedWith(@NonNull Object thisObject, @NonNull Object[] args) throws Throwable — 替换 this 和参数继续链
🏗️ interface XposedInterface.CtorInvoker<T>

构造函数专用调用器,继承自 Invoker

@NonNull T newInstance(Object... args) throws InvocationTargetException, IllegalArgumentException, IllegalAccessException, InstantiationException
@NonNull <U> U newInstanceSpecial(@NonNull Class<U> subClass, Object... args) throws InvocationTargetException, IllegalArgumentException, IllegalAccessException, InstantiationException

说明:newInstanceSpecial 会跳过子类构造器初始化,可能使子类字段未初始化,用于高级自定义初始化场景。

⚠️ enum XposedInterface.ExceptionMode

Hook 异常处理模式。

  • DEFAULT — 遵循 module.prop 配置,默认 PROTECTIVE。
  • PROTECTIVE — 捕获并记录 Hooker 异常,调用继续(推荐)。
  • PASSTHROUGH — 异常直接传播给调用者(调试用)。
🛠️ interface XposedInterface.HookBuilder
HookBuilder setPriority(int priority) — 设置优先级
HookBuilder setExceptionMode(@NonNull ExceptionMode mode) — 设置异常模式
@NonNull HookHandle intercept(@NonNull Hooker hooker) — 安装 Hook,返回句柄
🎣 interface XposedInterface.Hooker
Object intercept(@NonNull Chain chain) throws Throwable

拦截方法/构造函数调用,通常调用 chain.proceed() 并返回结果。

🔖 interface XposedInterface.HookHandle
@NonNull Executable getExecutable()
void unhook() — 取消 Hook,幂等。
📞 interface XposedInterface.Invoker<T,U>
T setType(@NonNull Type type) — 设置调用器类型
Object invoke(Object thisObject, Object... args) throws InvocationTargetException, IllegalArgumentException, IllegalAccessException
Object invokeSpecial(@NonNull Object thisObject, Object... args) throws InvocationTargetException, IllegalArgumentException, IllegalAccessException
🎛️ interface XposedInterface.Invoker.Type

调用器类型的密封接口,有两个实现:

  • Type.Origin — 调用原始方法,跳过所有 Hook。常量 ORIGIN
  • Type.Chain — 从中间执行,跳过优先级高于 maxPriority 的 Hook。常量 FULL (maxPriority = PRIORITY_HIGHEST)
📦 class XposedInterfaceWrapper

包装类,屏蔽框架实现细节。模块通常不直接使用。

public final void attachFramework(@NonNull XposedInterface base) — 模块不应调用。

其他方法均委托给内部 XposedInterface 实例,行为同上。

🧩 abstract class XposedModule

所有模块入口类的基类,每个进程只实例化一次。继承自 XposedInterfaceWrapper 并实现 XposedModuleInterface。

🔄 interface XposedModuleInterface
default void onModuleLoaded(@NonNull ModuleLoadedParam param) — 模块加载到进程时调用(一次)
@RequiresApi(29) default void onPackageLoaded(@NonNull PackageLoadedParam param) — 有代码的包加载时调用,默认 ClassLoader 就绪。
default void onPackageReady(@NonNull PackageReadyParam param) — AppComponentFactory 实例化类加载器后调用。
default void onSystemServerStarting(@NonNull SystemServerStartingParam param) — system_server 启动时调用(替代第一个包加载阶段)。
嵌套接口
  • ModuleLoadedParam — 提供 isSystemServer()getProcessName()
  • PackageLoadedParam — 提供 getPackageName(), getApplicationInfo(), isFirstPackage(), getDefaultClassLoader() (API 29+)
  • PackageReadyParam — 继承 PackageLoadedParam,增加 getClassLoader()getAppComponentFactory() (API 28+)
  • SystemServerStartingParam — 提供 getClassLoader()

📦 包 io.github.libxposed.api.error

class XposedFrameworkError extends Error

表示 Xposed 框架功能出现问题。

public XposedFrameworkError(String message)
public XposedFrameworkError(String message, Throwable cause)
public XposedFrameworkError(Throwable cause)
💥 class HookFailedError extends XposedFrameworkError

表示 Hook 因框架内部错误而失败。设计为 Error,模块不应尝试捕获,应向框架维护者报告。

public HookFailedError(String message)
public HookFailedError(String message, Throwable cause)
public HookFailedError(Throwable cause)