xposed 插件开发
换了新手机,装上了Xposed
加上各种插件,简直完美。以前一直想了解Xposed
是如何工作的,正好有个插件有点 Bug,于是了解一下。
首先看文档,安装好Android Studio
,下载开发包,导入项目,修改好gradle
里的配置,这些网上都有直接的教程,没有很大问题。然后在AndroidMenafest.xml
文件里声明为Xposed
模块,创建Hook
类,并创建xposed_init
文件,声明好入口。
1 |
|
安装运行代码以后,可以在Xposed
里找到刚刚安装的 APP,勾上并开启,重启手机便能看到在Xposed
日志里打印的Hello xposed!
了。
开发Xposed
比较麻烦的地方在于每次改代码以后安装都需要重启,而且调试其他APP
只能通过日志查看,于是我找到了可以使用Android Studio
断点调试功能的方法。首先需要建一个自己的APP
,调用会触发Xposed
的代码,在Android Studio
里面运行附加调试,调试的内容是调试Xposed
插件的代码而不是那个APP
,这样在APP
中触发了Xposed
应用代码以后,断点即可进入了。
剩下的内容便很简单了,找到原来那个插件的代码,发现它的调用方式有问题,去查看Android
源码,找到正确的调用方式,使用反射拿到对象并调用,于是便解决了问题。唯一的麻烦就是查Android
源码需要将各个版本的都下载下来并查看,而国内的网速…
有了这个插件以后,之前的那个有问题的插件也不用安装了,直接卸载,用这个替代,为了解决之前插件的一些缺陷,还准备做个可视化界面,目前只是把数据写入数据库,可以使用sqlite editor
查看。
还有个情况是,好像在初始化的时候不能读取数据库和文件,于是做不到动态判断哪些包是需要拦截哪些不需要。可能底层 C 语言可以做到,但是太麻烦了,以后如果还涉及到这种插件可以研究下动态加载拦截包如何实现。
这个插件如果有需要也可以自由下载代码编译,个人比较懒,也不想发布到Xposed
市场里。