xposed教程比較多,但是大多都相差無幾,要麼就只是入門級,要麼就是從源碼角度分析xposed的原理。但是針對xposed開發技巧類的卻不多,很難找。 經常有人問我xposed靜態方法,靜態變量如何hook,插件更新後能不能不重啓調試,我決定針對這些寫一系列教程,如果有不正確的地方希望大家指出來改正。
xposed是什麼東西就不介紹了,百度搜索一下就有,太多了。
首先給出幾個地址,相信對你會很有幫助
rovo的github主頁:https://github.com/rovo89
xposed官網:http://repo.xposed.info/
xposed javadoc地址:http://api.xposed.info
官方英文教程:https://github.com/rovo89/XposedBridge/wiki/Development-tutorial
xda論壇的xposed版塊:http://forum.xda-developers.com/xposed
最後XposedBridgeApi地址:https://jcenter.bintray.com/de/robv/android/xposed/api/
當然XposedBridgeApi你也可以前往csdn下載54版的,但是我喜歡嚐鮮,就下載了新版,都可以用,看自己喜好。開始安裝
Eclipse開發:將jar複製到lib或者libs目錄下即可
Android Studio開發:將jar複製到app下的libs目錄中,修改app的build.gradle,添加provided files('libs/api-81.jar')
大致是這樣
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.0'
testCompile 'junit:junit:4.12'
provided files('libs/api-81.jar')
}
然後如果Android Studio是2.0以上版本需要關閉Instant Run,File>>Setting>>Build….全部取消勾選就行了
在AndroidManifest.xml中添加如下代碼:
<!-- xposed模塊開關,默認true就行 -->
<meta-data
android:name="xposedmodule"
android:value="true" />
<!-- 提示文字 -->
<meta-data
android:name="xposeddescription"
android:value="Module測試" />
<!-- 最低版本支持 -->
<meta-data
android:name="xposedminversion"
android:value="54" />
新建一個類,並實現IXposedHookLoadPackage接口,並實現IXposedHookLoadPackage接口中的handleLoadPackage方法
public class HookMain implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
//這裏測試Hook靜態變量,修改手機機型和廠商
XposedHelpers.setStaticObjectField(android.os.Build.class, "MANUFACTURER", "醉貓");//廠商
XposedHelpers.setStaticObjectField(android.os.Build.class, "MODEL", "bestmk.cn");//機型
}
}
接下來在assets中創建一個新的文件,命名爲xposed_init,在裏面添加你剛纔創建的類名cn.bestmk.HookMain
運行應用,在xposed框架中勾選你剛纔編寫的模塊,重啓手機,然後手機機型就改變了。
下一篇文章將會更詳細的介紹各種情形的hook方式
如果有問題歡迎發表評論,或者發送到我的郵箱[email protected],有時間我會一一解答