XposedTools: 编译xposed的相关脚本,与工具。
xposedbridge: xposed 框架的java层,
XposedInstaller: xposed 框架的独立apk,用于管理基于xposed的相关插件
Xposed : 修改之后的app_process,用于替代系统的 app_process
android_art: 对art_methods 进行改造后的art,用于替代系统的 art。
以上xposed框架的代码可以在rovo89 的githup上下载。
https://github.com/rovo89
一、编译安装 xposed
1、下载 XposedTools
xposed 框架 是在 XposedTools 目录下,基于源码进行编译的。
在任意一个目录执行命令,下载 XposedTools
git clone https://github.com/rovo89/XposedTools.git
2、下载xposed框架的相关代码
进入AOSP/.repo目录, 新建local_manifests目录。
把XposedTools/local_manifests/下, 对应的sdk目标文件拷贝过去。
repo sync frameworks/base/cmds/xposed
repo sync build
repo sync art
git clone https://github.com/rovo89/xposedbridge
备注:
1、local_manifests/目录下是各种API版本(即SDK=22,23之类)对应的xml文件。M版本对应的版本为23
2、因为android源码的 art的仓名与 咱们的不同,所以需要针对.repo/local_manifests/xposed_sdk*.xml进行一下改造:
将此文件中:
<remove-project name="platform/art" />
此行中的platform/art 更改为,系统的 对应art仓;
或将.repo/manifests.xml 中的art仓删除。
3、配置 编译环境:
进入XposedTools 目录,根据build.conf.sample 模板,创建build.conf,
修改 build.conf 文件中的这几个参数
outdir = XposedBridge.jar 的路径
javadir = XposedBridge 源码路径
[AospDir]
sdk版本 = 源码路径
修改XposedTools目录下Xposed.pm文件,将默认 的 PRODUCT 更改自己对应工程的即:
在get_lunch_mode 方法内 将 返回的TARGET_PRODUCT 改为 对应工程的,
并修改他的 get_outdir方法,将其返回目录,改为自己 xposed 且实的生成目录
4、编译
编译XposedBridge.jar
进入 XposedTools 目录 执行:
./build.pl -a java
XposedBridge.jar 将生成编译到 outdir 目录
备注:编译 此jar包请使用jdk 1.8, 此jar包其实是一个apk,强制改名为jar包的。
编译全工程
./build.pl -t arm64:sdkVersion
到此会编译出对应的所有文件,将编译xposed 安装到手机中有三种方式:
a、之前已经编译了systme.img,那么,将
XposedBridge.jar 放到system目录下
app_process32_xpose&&app_process64_xposed 替换对应的app_process
out/outdir/sdk23/arm64/files/system/xposed.prop 放到system中
之后调用make snod, 从新快速打包system.img,刷入手机中即可
b、找到对应文件将起放到手机的如下目录:
out/.../system/bin/app_process32_xposed ---> /system/bin/app_process32
/system/bin/app_process64_xposed ---> /system/bin/app_process64
/system/bin/dex2oat
/system/bin/oatdump
/system/bin/patchoat
out/outdir/java/XposedBridge.jar ---> /system/framework/XposedBridge.jar
/system/lib/libart-compiler.so
/system/lib/libart.so
/system/lib/libsigchain.so
/system/lib/libxposed_art.so
/system/lib64/libart-disassembler.so
/system/lib64/libart.so
/system/lib64/libsigchain.so
/system/lib64/libxposed_art.so
out/outdir/sdk23/arm64/files/system/xposed.prop ----> /system/xposed.prop
ps:记得更改权限,关闭selinux
5、下载,编译apk
git clone https://github.com/rovo89/XposedInstaller
./gradlew
./gradlew build
请使用java 1.8 进行编译
常见的问题:
1、下载代码时遇到问题
Unable to negotiate with 10.140.70.24 port 29418: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
fatal: remove-project element specifies non-existent project: platform/art
解决方法:
删除.repo/manifest.xml 中的platform/art 仓
删除.repo/local_manifests/xposed_sdk23.xml 中,remove-project art 仓的对应行,
以此将系统原本的art仓 替换为 xposed的art仓,
或者直接将xposed_sdk23.xml内部<remove-project name="platform/art" /> 改为 <remove-project name="ruby/platform/art" />也可。
编译时遇到的问题:
/XposedTools$ ./build.pl -t arm64:23
Ubuntu 首次执行perl脚本时,报错误:Can't locate Cpatchoatonfig/IniFiles.pm
in @INC (you may need to install the Config::IniFiles module)
.......
等类似异常,根据提示将 所缺的插件安装即可:
sudo cpan install Config::IniFiles
其他类似的error,类似处理。
app\build.gradle增加
android {
..............
lintOptions {
abortOnError false
}
..............
}