其实网上已经有很多 Xposed 插件开发的入门教程了,我写的这篇与其说是教程,不如说是参考,为了防止以后忘了开发步骤,这里就写篇博客记录一下。
要使用 Xposed 插件,首先要 root 手机并安装 Xposed 框架,这个是必须的(Xposed 安装相关教程请自行百度吧)。不过现在有一个 VirtualXposed 可以免 root 使用 Xposed,本人没有用过,就不多介绍了,有兴趣的朋友可以去搜索了解一下,下面就进入我们的 Xposed 插件开发教程。
步骤一:创建一个 Android 应用
打开 Android Studio 并创建一个 Android 应用,其实 Xposed 插件也是一个普通的 app,只不过需要添加一些额外的配置,以便 Xposed 能够识别这些插件,这个似乎没什么好说的,我就不啰嗦了。
步骤二:添加 Xposed 插件相关配置
首先在项目的 app 目录下的build.gradle 文件中添加如下配置:
dependencies {
compileOnly 'de.robv.android.xposed:api:54'
}
其中 dependencies 表示项目的依赖项;compileOnly 表示此此包仅编译时使用,不会将相关代码打包进 apk;后面的数字 54 表示要支持的 Xposed 版本,这个可以根据需要自行调整。
接着在 AndroidManifest.xml 中按如下代码配置:
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
android:name="xposedmodule"
android:value="true" />
android:name="xposeddescription"
android:value="description" />
android:name="xposedminversion"
android:value="54" />
主要就是添加 3 个 meta-data 元素,其中xposedmodule 表示此应用是一个 Xposed 插件;xposeddescription 为此插件的描述,插件安装后在 Xposed 插件页面可以看到此描述文本;而 xposedminversion 则表示要求的 Xposed 最低版本,通常这个字段要和前面的依赖项版本号相同。
步骤三:创建 Hook 类并实现相关代码
新建一个类,假设命名为 XposedInit,让此类实现IXposedHookLoadPackage 接口,代码如下:
public class XposedInit implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
XposedBridge.log("Loaded app: " + lpparam.packageName);
}
}
这里先打印一个 log 吧,具体的 hook 代码以后有时间再写篇博客,这里就不写了,不然这博客写不完了。
步骤四:配置 xposed_init
在 assets 目录下新建一个名为 xposed_init 的文件(文件名必须是这个,且无后缀),并将相关 hook 类的全限定名称写入此文件中,如有多个类,则每行写一个,如:
xxx.xxx.XposedInit
这一步是告诉 Xposed 我们的 hook 类是哪些,要不 Xposed 找不到我们的类就无法完成 hook 操作了。
步骤五:编译插件并安装到手机
使用 AndroidStudio 编译并生成签名的 apk 文件,然后安装到手机中,如无意外,Xposed 会提示我们插件已安装,并询问是否要开启插件并重启手机,重启后打开 Xposed 的日志界面就可以看到我们的插件输出的 log 了。