其實網上已經有不少 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 了。