Xposed插件開發
簡單介紹
Xposed,大名鼎鼎得Xposed,是Android平臺上最負盛名的一個框架。在這個框架下,我們可以加載很多插件App,這些插件App可以直接或間接操縱系統層面的東西,比如操縱一些本來只對系統廠商才open的功能(實際上是因爲Android系統很多API是不公開的,而第三方APP又沒有權限)。有了Xposed後,理論上我們的插件APP可以hook到系統任意一個Java進程。
開發準備
編譯器我最初用AndroidStudio+Gradle環境發現不行,後來想了一下,應該是不能用Gradle環境的。於是就用IDEA+MAVEN創建工程,然後再導入AndroidStudio編譯的。
首先要給測試機root+刷rec|twrp+安裝XposedInstaller,然後用XposedInstaller下載卡刷Xopsed框架卡刷包,然後在rec中刷進去。第一次開機會有點久,安裝成功之後測試機就準備好了。
然後是jar包:百度搜,下載XposedBridgeApi-54.jar,在工程目錄新建lib文件夾,把下載的jar包放進去。然後右鍵工程-OpenModuleSetting 把lib以addjar文件夾的形式加入進來。注:不可用工程默認的libs目錄,一定要自己創建lib目錄使用。
接下來是AndroidManifest.xml
在application中添加:
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="介紹" />
<meta-data
android:name="xposedminversion"
android:value="56" />
創建xposed類,來寫代碼吧
import android.telephony.TelephonyManager;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
/**
* Created by zhaoyong on 2016/5/14.
*/
public class XposedTest implements IXposedHookLoadPackage {
/* (non-Javadoc)
* @see de.robv.android.xposed.IXposedHookLoadPackage#handleLoadPackage(de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam)
*/
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
hookPhoneinfo(loadPackageParam);
}
private void hookPhoneinfo(final XC_LoadPackage.LoadPackageParam lpparam) {
//getDeviceId
findAndHookMethod(TelephonyManager.class.getName(), //包名類名
lpparam.classLoader, //不用管 這樣寫就好
"getDeviceId", //方法名
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
//在該方法執行前調用
}
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
//在該方法執行之後調用
//給改方法自定義返回值
param.setResult("自定義返回值");
}
});
}
}
接下來創建assets目錄,創建文件xopsed_init,以本文文檔的形式創建,不要加.txt後綴,裏面寫
com.xxx.xxx.xxx.XposedTest
完成的包名類名路徑
完成,運行安裝,激活,重啓搞定。
關於如何保存自定義配置,看我的另一個Xposed保存SP的文章。