You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 6.0.1下Xposed Hook PackageManagerService报类找不到问题咨询

错误原因
  • PackageManagerService属于system_server系统进程的类,你当前代码未过滤进程,拿到的是普通应用的类加载器,自然无法加载系统服务的类,触发类找不到异常。
  • 普通应用进程的ClassLoader不存在系统服务相关类,只有system_server进程的ClassLoader才能加载到目标类。
修复后的代码
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

public class HookAPM_6 implements IXposedHookLoadPackage {

    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
        // 仅处理system_server进程,其包名固定为android
        if (!"android".equals(lpparam.packageName)) {
            return;
        }

        Class<?> packageManagerService = XposedHelpers.findClass("com.android.server.pm.PackageManagerService",
                lpparam.classLoader);

        // 注意内部类引用使用$而非.
        XposedHelpers.findAndHookMethod(packageManagerService, "installPackageLI",
                "com.android.server.pm.PackageManagerService$InstallArgs",
                "com.android.server.pm.PackageManagerService$PackageInstalledInfo",
                new XC_MethodHook() {
                    @Override
                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                        super.beforeHookedMethod(param);
                        // 此处添加自定义hook逻辑
                    }
                });
    }
}
注意事项
  • 必须在Xposed框架的模块作用域设置中勾选「系统框架(android)」,否则不会触发system_server进程的hook回调。
  • Java语法中内部类的全类名使用$分隔外部类和内部类,原代码中参数类名使用.分隔会导致后续方法找不到报错。
  • 部分定制ROM可能修改AOSP原生的installPackageLI方法签名,如果还是提示方法找不到,可以先dump目标系统的PMS类所有方法确认参数列表。

内容的提问来源于stack exchange,提问作者王胖虎

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:15:02