环境
ubuntu 16.04
aosp7.1.2r8源码
编译Xposed
首先需要将xposed相关项目都clone到本地
https://github.com/rovo89/Xposed.git
https://github.com/rovo89/XposedBridge.git
https://github.com/rovo89/android_art.git
XposedBridge
使用AS打开XposedBridge项目,直接build,在项目的app/build/outputs/apk
下将app-release-unsigned.apk
重命名为XposedBridge.jar
。
将这个jar包放在aosp源码目录下的/out/target/product/sailfish/system/framework/
目录下。
/out/java/
android_art
将该项目直接替换源码目录的art目录
Xposed
将xposed目录复制到aosp712r8/frameworks/base/cmds/
目录下
XposedTools
复制build.conf.sample
并重命名为build.conf
修改其中内容:
1 | [General] |
outdir指向的路径是xposed编译之后生成的文件的存放路径。
version的值和后边的参数是自己设置的。编译之后会写入到xposed.prop文件中。
makeflags是设置在后边编译过程中使用的线程数。
AospDir指向的路径是android源码存放的路径,前边的值是源码对应的SDK的版本号。这里我指向的是android5.1.1的源码,对应的android sdk的版本是22。
修改完之后需要下载一些perl的库。
sudo apt-get install libauthen-ntlm-perl libclass-load-perl libcrypt-ssleay-perl libdata-uniqid-perl libdigest-hmac-perl libdist-checkconflicts-perl libfile-copy-recursive-perl libfile-tail-perl
perl -MCPAN -e ‘install File::ReadBackwards’
使用build.pl进行编译./build.pl -t arm:25
将生成的xposed.zip发布到web上,以供XposedInstall安装使用。
XposedInstall
修改de.robv.android.xppsed.installer.util.DownloadsUtil
其中的setUrl函数
1 | public Builder setUrl(String url) { |
然后安装,installXposed即可。
魔改去特征
XposedInstall
直接修改包名即可。
全局替换de.robv.android.xposed.installer
,改为de.robv.android.xppsed.installer
。
1 | private static final String[] XPOSED_PROP_FILES = new String[]{ |
再build->clean project。
XposedBridge-art.jar
替换包名为de.robv.android.xppsed
,全局替换de.robv.android.xposed,改为
de.robv.android.xppsed`。
生成出来的jar包也改为XppsedBridge.jar
。
gradle使用jarStubsSorce
和jarStubs
生产api.jar包,给自己编写Xposed插件使用。
Xposed
libxposed_art.cpp
改为libxppxosed_art.cpp
xposed.h
1 |
|
libxposed_common.h
1 |
|
xposed_service.cpp
1 | IMPLEMENT_META_INTERFACE(XposedService, "de.robv.android.xppsed.IXposedService"); |
xposed_shared.h
1 |
|
ART.mk
1 | LOCAL_SRC_FILES += \ |
并将libxposed_art.cpp
文件名改为libxppsed_art.cpp
XposedTools
build.pl
中的xposed.prop
改为xpposed.prop
,将libxposed_art
改为libxppsed_art
,将XposedBridge.jar
改为XppsedBridge.jar
zipstatic/_all/META-INF/com/google/android/flash-script.sh
中将xposed.prop
改为xpposed.prop
,将libxposed_art
改为libxppsed_art
,将XposedBridge.jar
改为XppsedBridge.jar