借鉴:
安装流程:
安装 雷电模拟器3.93
下载安装xposed框架。
xposed 框架在Dalvik 虚拟机和ART虚拟机上的安装不一样(至于ART虚拟机和Dalvik虚拟机的区别,可以参阅 文章)
如果Android 版本不小于 5.0,就是ART版本的虚拟机,需要安装的 Xposed框架 提取码:at5u;
如果Android版本小于5.0,基本上是Dalvik的虚拟机,需要安装的 Xposed 框架 提取码:dsc0
至于Android 神器 xposed 框架使用指南 提到的需要下载两个文件进行安装,我们可以先安装上述的文件,运行后会提示缺少另一个文件,然后点击安装即可。
ART上的安装
授予root权限
接下来提示安装成功后,重启,可以看到安装成功
安装成功
基于Android Studio 编写一个Xpose模块
新建一个空项目,名为XposeDemo,可以包含或者不包含Activity,因为这里的demo中不会用到activity. 流程如下:
新建模块项目
编写模块代码
添加模块入口
添加模块的额外信息
1. 新建模块项目:导入Xpose的jar包
这里使用的是 api-82.jar (提取码:zxsh), 将文件添加到libs目录下
libs目录
然后去修改build.gradle(app)
gradle修改
我的AS版本是3.6.1, 和上文的博客在这里的修改略有区别。
2. 编写模块代码
这里创建XP_Hook类
package com.example.xposedemo;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
public class XP_Hook implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
if(loadPackageParam.packageName.equals("com.qianyu.zhuceji")){
XposedBridge.log("xp模块的构建!!!"); // 在日志中打印出一条信息
}
}
}
这里使用 com.qianyu.zhuceji ,是因为要测试的apk软件的包名就是这段字符。 测试的软件 zhuceji.apk (提取码:v1bh)
3. 添加模块入口:创建文件夹assets和文件xposed_init
创建后的目录树如下:
文件目录树
xposed_init的内容如下:
com.example.xposedemo.XP_Hook
就是我们编写的类的路径名。这里的作用相当于说明编写模块的入口是哪里。
4. 添加模块的额外信息:在AndroidManifest.xml 中添加模块信息
AndroidManifest.xml 标识
android:name="xposedmodule"
android:value="true"/>
android:name="xposeddescription"
android:value="Xposed Proxy For HOOK"/>
android:name="xposedminversion"
android:value="54"/>
对这里添加的信息做一个说明:
xposedmodule: Android程序作为Xposed中的一个模块,所以值为true
xposeddescription: 对本模块功能的描述,简单叙述就可以
xposedminversion: 本模块开发时用到的Xposed的jar包最低版本号,这里是54。
5. 在模拟器中进行运行
在模拟器上运行我们编写的项目,模拟器会提示需要重启,重启后,打开Xpose,查看日志信息如下:
重启后的日志
之后点击zhuceji程序后,再查看Xpose的日志信息,这里需要刷新一下(比如,先点击下框架,再点击日志),就输出了我们写的那句话:
运行程序后
以上。