2

我制作了一个 xposed 模块来修改 google messenger 应用程序,但是我遇到了一个使用引导类加载器找不到 xposed 的类的问题:

    public class XposedModSendTimestamp implements IXposedHookLoadPackage {
        public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
        if (!lpparam.packageName.equals("com.google.android.apps.messaging"))
            return;
        XposedBridge.log("Attempt to hook ConversationMessageView.a");
        findAndHookMethod("com.google.android.apps.messaging.ui.ConversationMessageView", lpparam.classLoader, "a", Cursor.class, String.class, "boolean", String.class, new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable{
                //code
            }
        });
    }
}

来自 xposed 日志的错误:

09-29 00:20:49.194 I/Xposed  (  729):   Loading class com.xposed.florian.messengermod.XposedModSendTimestamp
09-29 00:21:28.915 I/Xposed  ( 4465): Attempt to hook ConversationMessageView.a
09-29 00:21:28.927 E/Xposed  ( 4465): de.robv.android.xposed.XposedHelpers$ClassNotFoundError: java.lang.ClassNotFoundException: com.google.android.apps.messaging.ui.ConversationMessageView
09-29 00:21:28.927 E/Xposed  ( 4465):   at de.robv.android.xposed.XposedHelpers.findClass(XposedHelpers.java:62)
09-29 00:21:28.927 E/Xposed  ( 4465):   at com.xposed.florian.messengermod.XposedModSendTimestamp.handleLoadPackage(XposedModSendTimestamp.java:17)
09-29 00:21:28.927 E/Xposed  ( 4465):   at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(IXposedHookLoadPackage.java:34)
09-29 00:21:28.927 E/Xposed  ( 4465):   at de.robv.android.xposed.callbacks.XC_LoadPackage.call(XC_LoadPackage.java:61)
09-29 00:21:28.927 E/Xposed  ( 4465):   at de.robv.android.xposed.callbacks.XCallback.callAll(XCallback.java:106)
09-29 00:21:28.927 E/Xposed  ( 4465):   at de.robv.android.xposed.XposedBridge$1.beforeHookedMethod(XposedBridge.java:193)
09-29 00:21:28.927 E/Xposed  ( 4465):   at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:720)
09-29 00:21:28.927 E/Xposed  ( 4465):   at android.app.ActivityThread.handleBindApplication(<Xposed>)
09-29 00:21:28.927 E/Xposed  ( 4465):   at android.app.ActivityThread.access$1600(ActivityThread.java:159)
09-29 00:21:28.927 E/Xposed  ( 4465):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1445)
09-29 00:21:28.927 E/Xposed  ( 4465):   at android.os.Handler.dispatchMessage(Handler.java:102)
09-29 00:21:28.927 E/Xposed  ( 4465):   at android.os.Looper.loop(Looper.java:152)
09-29 00:21:28.927 E/Xposed  ( 4465):   at android.app.ActivityThread.main(ActivityThread.java:5507)
09-29 00:21:28.927 E/Xposed  ( 4465):   at java.lang.reflect.Method.invoke(Native Method)
09-29 00:21:28.927 E/Xposed  ( 4465):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
09-29 00:21:28.927 E/Xposed  ( 4465):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
09-29 00:21:28.927 E/Xposed  ( 4465):   at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
09-29 00:21:28.927 E/Xposed  ( 4465): Caused by: java.lang.ClassNotFoundException: com.google.android.apps.messaging.ui.ConversationMessageView
09-29 00:21:28.927 E/Xposed  ( 4465):   at java.lang.Class.classForName(Native Method)
09-29 00:21:28.927 E/Xposed  ( 4465):   at java.lang.Class.forName(Class.java:324)
09-29 00:21:28.927 E/Xposed  ( 4465):   at external.org.apache.commons.lang3.ClassUtils.getClass(ClassUtils.java:823)
09-29 00:21:28.927 E/Xposed  ( 4465):   at de.robv.android.xposed.XposedHelpers.findClass(XposedHelpers.java:60)
09-29 00:21:28.927 E/Xposed  ( 4465):   ... 16 more
09-29 00:21:28.927 E/Xposed  ( 4465): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.apps.messaging.ui.ConversationMessageView" on path: DexPathList[[zip file "/data/app/com.google.android.apps.messaging-1/base.apk"],nativeLibraryDirectories=[/data/app/com.google.android.apps.messaging-1/lib/arm64, /data/app/com.google.android.apps.messaging-1/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]]
09-29 00:21:28.927 E/Xposed  ( 4465):   at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
09-29 00:21:28.927 E/Xposed  ( 4465):   at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
09-29 00:21:28.927 E/Xposed  ( 4465):   at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
09-29 00:21:28.927 E/Xposed  ( 4465):   ... 20 more
09-29 00:21:28.927 E/Xposed  ( 4465):   Suppressed: java.lang.ClassNotFoundException: com.google.android.apps.messaging.ui.ConversationMessageView
09-29 00:21:28.927 E/Xposed  ( 4465):       at java.lang.Class.classForName(Native Method)
09-29 00:21:28.927 E/Xposed  ( 4465):       at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
09-29 00:21:28.927 E/Xposed  ( 4465):       at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
09-29 00:21:28.927 E/Xposed  ( 4465):       at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
09-29 00:21:28.927 E/Xposed  ( 4465):       ... 21 more
09-29 00:21:28.927 E/Xposed  ( 4465):   Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

我使用此处的教程示例尝试了此配置并且它有效,因此我认为它与应用程序有关,可能与类加载器有关,但我对此知之甚少。

所以请帮助我,我不明白。

4

0 回答 0