Xposed模組開發入門教程
前言:在高手如雲的XDA論壇上Xposed框架都被許多開發者譽為“安卓第一神器”。究竟是什麼神奇的能力讓它在眾多APP中脫引而出呢?本文將指引大家完成一個Xposed上最簡單的Demo,讓大家感受一下Xposed的能力。
一、手機環境
1.ROOT過的Android手機(根據手機型號自行ROOT,本文不再詳述)
2.安裝了Xposed框架(沒有Xposed框架的可從此處下載)
二、原理
Xposed替換了/system/bin/app_process可執行檔案,在啟動Zygote時載入額外的jar檔案(/data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar),並執行一些初始化操作(XposedBridge
三、開發Xposed模組
1.加入jar包
將XposedBridgeApi-54.jar加入到libs資料夾下,沒有jar包的可從此處下載:
2.匯入jar包
在build.gradle的dependencies下加入語句:(單引號內內容為實際jar包所在路徑)
compile files('libs/XposedBridgeApi-54.jar')
3.修改Androidmanifest.xml檔案
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.administrator.xposeddemo"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <!-- 作為xposed模組 --> <meta-data android:name="xposedmodule" android:value="true" /> <!-- 模組描述 --> <meta-data android:name="xposeddescription" android:value="模組描述" /> <!-- XposedBridgeApi的最低版本號 --> <meta-data android:name="xposedminversion" android:value="54" /> </application> </manifest>
主要在application下加入三個元資料標籤,
xposedmodule表示作為Xposed下的一個模組,value值為true。
xposeddescription表示對本模組的描述,該描述會顯示在安裝好後的程式名稱下方。
xposedminversion表示jar包的最低版本號,我們使用的是54。
4.新建一個類Test,該類實現IXposedHookLoadPackage的介面,程式碼如下:
package com.example.administrator.xposeddemo; import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.callbacks.XC_LoadPackage; /** * Created by Administrator on 2016/5/10. */ public class Test implements IXposedHookLoadPackage { @Override public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable { // 列印裝載的apk程式包名 XposedBridge.log("Launch app: " + loadPackageParam.packageName); } }
該類覆蓋了介面中的handleLoadPackage方法,通過對該方法中的引數loadPackageParam執行某些操作可對實際執行的該apk進行劫持,這裡我們只是簡單地列印包名。
5.指定該模組的執行入口
在/app/src/main/下新建一個assets資料夾:
在該資料夾下新建一個名為"xposed_init"的檔案:
在xposed_init中寫上Test類的入口:
6.將程式進行key簽名後生成apk,然後安裝到手機上。
注:儘量簽名後生成apk安裝,debug執行有時候不行。
安裝完成後通知欄會出現如下圖通知,點選“啟用並重啟”
重啟後Xposed框架的模組下會出現該Demo:
7.Android studio下檢視Tag為“Xposed”的logcat資訊:
結果如我們預想的那樣,logcat下可以看到我們launch的各種app包名。
完整原始碼下載請點選這裡。