其實網上已經有很多 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 中按如下代碼配置:
<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 最低版本,通常這個字段要和前面的依賴項版本號相同。
步驟三:創建 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 了。
轉載於:https://www.cnblogs.com/andorxor/p/9347820.html