Xposed是Android平臺上的有名的Hook工具,用它能夠修改函數參數,函數返回值和類字段值等等,也能夠用它來進行調試。Xposed有幾個部分組成:java
XposedInstaller,該項目是Xposed安裝器,使得普通用戶在使用Xposed更方便,同時,它還能夠管理手機上已經安裝的Xposed模塊,它編譯完成後將生成apk文件,本文不討論如何編譯它。
瞭解了這些,下面咱們來試試如何編譯它們android
Xposed構建工具,XposedTools:https://github.com/rovo89/XposedToolsgit
將Android源碼下的art目錄移動到其餘路徑備份,好比Android源碼的上層路徑。在Android源碼目錄執行git clone https://github.com/rovo89/android_art -b xposed-nougat-mr2 art
,將修改過的android art下載到Android源碼根目錄。github
注:請注意上面選擇的分支是
xposed-nougat-mr2
,我使用的是 Android7.1.2的源碼,因此選擇該分支。請根據Android源碼版本選擇分支。api
轉到frameworks/base/cmds
目錄,執行git clone https://github.com/rovo89/Xposed xposed
,將Xposed Native部分的源碼下載。架構
在任意目錄執行git clone https://github.com/rovo89/XposedBridge -b art
,而後導入Android Studio中,點Build->Rebuild Project,會在app/build/intermediates/transform/preDex/release
目錄下生成.jar文件,將生成的jar文件重命名爲XposedBridge.jar
,放入Android源碼目錄下的out/java/
下。也能夠直接生成apk,而後將生成的apk後綴改成jarapp
注:若是想生成供Xposed模塊調用的XposedBridge.jar,則在Android Studio的右側打開Gradle Project,雙擊
jarStubs
就會在app/build/api
生成api.jar函數
在任意目錄執行git clone https://github.com/rovo89/XposedTools
,將XposedTools目錄下的build.conf.sample
複製一份,並將它重命名爲build.conf
,build.conf文件用於配置構建環境,咱們來看他的內容:工具
[General] outdir = /android/out javadir = /android/XposedBridge [Build] # Please keep the base version number and add your custom suffix version = 65 (custom build by xyz / %s) # makeflags = -j4 [GPG] sign = release user = 852109AA! # Root directories of the AOSP source tree per SDK version [AospDir] 19 = /android/aosp/440 21 = /android/aosp/500 # SDKs to be used for compiling BusyBox # Needs https://github.com/rovo89/android_external_busybox [BusyBox] arm = 21 x86 = 21 armv5 = 17
配置完成後,就能夠執行build.pl編譯了,如下有幾個例子:ui
./build.pl -a java
編譯XposedBridge.jar,須要在build.conf
裏指定javadir
./build.pl -t arm:25
編譯生成供cpu架構爲arm,sdk爲25平臺使用的Xposed
編譯完成後,將在Android源碼目錄/out/sdk25/arm
生成可刷入手機的zip文件
1.執行build.pl的時候提示找不到函數,好比提示找不到Config::IniFiles
.
能夠經過下面的方式來尋找並安裝依賴:
(1)執行apt-cache search Config::IniFiles
尋找Config::IniFiles所依賴的庫文件:
libconfig-inifiles-perl - Read .ini-style configuration files
(2)執行sudo apt install libconfig-inifiles-perl
安裝所依賴的庫