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
安装所依赖的库