Xposed插件开发
简单介绍
Xposed,大名鼎鼎得Xposed,是Android平台上最负盛名的一个框架。在这个框架下,我们可以加载很多插件App,这些插件App可以直接或间接操纵系统层面的东西,比如操纵一些本来只对系统厂商才open的功能(实际上是因为Android系统很多API是不公开的,而第三方APP又没有权限)。有了Xposed后,理论上我们的插件APP可以hook到系统任意一个Java进程。
开发准备
编译器我最初用AndroidStudio+Gradle环境发现不行,后来想了一下,应该是不能用Gradle环境的。于是就用IDEA+MAVEN创建工程,然后再导入AndroidStudio编译的。
首先要给测试机root+刷rec|twrp+安装XposedInstaller,然后用XposedInstaller下载卡刷Xopsed框架卡刷包,然后在rec中刷进去。第一次开机会有点久,安装成功之后测试机就准备好了。
然后是jar包:百度搜,下载XposedBridgeApi-54.jar,在工程目录新建lib文件夹,把下载的jar包放进去。然后右键工程-OpenModuleSetting 把lib以addjar文件夹的形式加入进来。注:不可用工程默认的libs目录,一定要自己创建lib目录使用。
接下来是AndroidManifest.xml
在application中添加:
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="介绍" />
<meta-data
android:name="xposedminversion"
android:value="56" />
创建xposed类,来写代码吧
import android.telephony.TelephonyManager;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
/**
* Created by zhaoyong on 2016/5/14.
*/
public class XposedTest implements IXposedHookLoadPackage {
/* (non-Javadoc)
* @see de.robv.android.xposed.IXposedHookLoadPackage#handleLoadPackage(de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam)
*/
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
hookPhoneinfo(loadPackageParam);
}
private void hookPhoneinfo(final XC_LoadPackage.LoadPackageParam lpparam) {
//getDeviceId
findAndHookMethod(TelephonyManager.class.getName(), //包名类名
lpparam.classLoader, //不用管 这样写就好
"getDeviceId", //方法名
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
//在该方法执行前调用
}
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
//在该方法执行之后调用
//给改方法自定义返回值
param.setResult("自定义返回值");
}
});
}
}
接下来创建assets目录,创建文件xopsed_init,以本文文档的形式创建,不要加.txt后缀,里面写
com.xxx.xxx.xxx.XposedTest
完成的包名类名路径
完成,运行安装,激活,重启搞定。
关于如何保存自定义配置,看我的另一个Xposed保存SP的文章。