Xposed插件开发流程

2021-01-16  本文已影响0人  SodaCrush

开发流程备忘

基于AndroidStudio开发xp插件基本步骤

<meta-data
    android:name="xposedmodule"
    android:value="true" />
<meta-data
    android:name="xposeddescription"
    android:value="插件描述文字" />
<meta-data
    android:name="xposedminversion"
    android:value="30" />
repositories {
    jcenter()
}

dependencies新增如下内容, 新增完成后点击Sync:

compileOnly 'de.robv.android.xposed:api:82'
compileOnly 'de.robv.android.xposed:api:82:sources'
package com.willson.myapplication;

import android.widget.TextView;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

public class Main implements IXposedHookLoadPackage {
    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable{
        if(lpparam.packageName.equals("com.willson.firstapp")) {
            XposedBridge.log("测试程序加载成功");
            XposedBridge.log("开始劫持com.willson.firstapp包");
            XposedHelpers.findAndHookMethod(TextView.class, "setText", CharSequence.class, new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    if(param.args[0].toString().startsWith("支付宝到账:")){
                        XposedBridge.log("成功Hook到setText方法");
                        param.args[0] = "支付宝到账: ¥10,000,000";
                        XposedBridge.log("修改成功!");
                    }
                }

                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    super.afterHookedMethod(param);
                    XposedBridge.log("Hook Done!");
                }
            });
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读