安装本地服务Xposed
安装xposed参考资料
xpoesd官网
xposed安装器源码
这是安装成功后的截图
装完之后我们需要打开我们的Studio,新建一个项目,并导入依赖
导入依赖
dependencies {
provided 'de.robv.android.xposed:api:82'
}
在AndroidManifest.xml中添加
<meta-data android:name="xposedmodule" android:value="true"/>
<meta-data android:name="xposeddescription" android:value="第一个xposed程序"/>
<meta-data android:name="xposedminversion" android:value="54"/>
- xposedmodule:表明是一个xposed程序
- xposeddescription:xposed程序的简介
- xposedminversion:xposed插件的最低版本
新建一个类实现接口
public class XposedModule implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
}
}
在assets文件夹中新建一个xposed_init的文件
把我们刚刚创建的那个类的包名复制过来,并加上类名
接下来我们在我们的mainActivity写一个点击事件
@OnClick(R.id.btn_click)
public void onViewClicked() {
showToast(getString());
}
public String getString(){
return "开启xposed失败";
}
然后我们在我们刚刚的那个XposedModule类中去通过反射修改getString的内容
public class XposedModule implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
if (lpparam.packageName.equals("com.tanxin.myxposed")){
Class clazz = lpparam.classLoader.loadClass("com.tanxin.myxposed.MainActivity");
XposedHelpers.findAndHookMethod(clazz, "getString", new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
}
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
param.setResult("已经劫持了。开启起飞了");
}
});
}
}
}
这时候运行你的app,发现还是劫持失败?what?老子的代码怎么可能会有BUG!!!
现在打开你的XPosedInstaller,去模块中勾选你的app,然后重启手机,然后就起飞了