Xposed 实际上以一种更有趣的方式工作,它/system/bin/app_process
通过添加一个 jar(/data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar
准确地说)进行修改,它允许您“挂钩”到任何方法调用。基本上,您可以在任何方法之前或之后运行自己的代码。以下是来自GitHub 页面的一些示例代码:
package de.robv.android.xposed.mods.tutorial;
import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
import android.graphics.Color;
import android.widget.TextView;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
public class Tutorial implements IXposedHookLoadPackage {
public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
if (!lpparam.packageName.equals("com.android.systemui"))
return;
findAndHookMethod("com.android.systemui.statusbar.policy.Clock", lpparam.classLoader, "updateClock", new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
TextView tv = (TextView) param.thisObject;
String text = tv.getText().toString();
tv.setText(text + " :)");
tv.setTextColor(Color.RED);
}
});
}
}
这挂钩到系统 UI 时钟更新方法并添加:)
到时间,加上使文本变为红色。希望这能让您对 Xposed 中的工作原理有所了解。
明显的好处是您没有替换原始应用程序,因此不需要解压缩签名推送过程。只需拥有原始应用程序、Xposed 框架和您的模块。
编辑:此外,仅解压缩和替换 PNG 不会让您访问工作代码,这就是为什么状态栏中的网络速度需要您使用 Xposed - 您必须“挖掘”创建文本的代码显示在状态栏中。