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