android源码
前面已经进行了android源码的安装,这次我对xposed进行定制编译
Xposed Art
# 克隆自己需要的版本出来
git clone https://github.com/rovo89/android_art.git -b xposed-nougat-mr2 art
# 备份android源码中的art
mv ./android/source/art ../art_bak
# 拷贝xposed-art进去
mv art ./android/source/art
定制xposed
此模块不需要进行修改
XposedTools
# 克隆项目
git clone https://github.com/rovo89/XposedTools.git
定制xposed
Xp框架的编译器 打包出可以刷机的zip 以下两个是打包脚本和刷机包脚本文件内容改成你对应的就好了
flash-script.sh不改刷机就会报错 缺少xpsoed.prop。
将build.conf.smaple 拷贝一份成build.conf,配置如下
[General]
outdir = /home/godtoy/android/out
# javadir = /android/XposedBridge
javadir = /home/godtoy/android/xposed-to-mask/XposedMaskBridge
[Build]
# Please keep the base version number and add your custom suffix
version = 89 (build by godtoy / %s)
makeflags = -j8
[GPG]
sign = release
user = 852109AA!
# Root directories of the AOSP source tree per SDK version
[AospDir]
25 = /home/godtoy/android/source/android-7.1.2_r39
# 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 flash-script.sh | 修改 |
xposed.prop | xxx.prop |
XposedBridge.jar | 自定义 XXXBridge.jar |
libxposed_art | libxxx_art |
app_process_xposed | app_process_xxx |
app_process64_xposed | app_process64_xxx |
如果想修改生产的proccess_xposed 可以修改flash-script.sh,其实也没必要
# line-56
install_and_link() {
TARGET=$1
# //
XPOSED="${1}_mask"
Xposed Bridge
该模块提供了一些java调用的api,同时也会内置一个brigde到编译目录,这块我们克隆代码后直接放到自己win或者mac系统进行编译就可以,然后把编译的包拷贝到指定目录即可 最新版本v89
git clone https://github.com/rovo89/XposedBridge.git
定制xposed
文件 | 修改 |
---|---|
整体包名 | com.xxx.xxx 之类的 |
XposedBridge.jar | 修改xxxBridge.jar 这个到时候需要 |
XposedInit.java | 参数 |
INSTALLER_PACKAGE_NAME | 修改包名 |
app_process_xposed | 修改 |
app_process64_xposed | 修改 |
调整process生成的名字
LOCAL_SRC_FILES := app_main2.cpp
LOCAL_MULTILIB := both
# LOCAL_MODULE_STEM_32 := app_process32_xposed
# LOCAL_MODULE_STEM_64 := app_process64_xposed
LOCAL_MODULE_STEM_32 := app_process32_mask
LOCAL_MODULE_STEM_64 := app_process64_mask
定制后可以查看第三篇xposedBridge打包,打包好分为2块,一块包含了apk文件的,可以拷贝的 XposedTools>build.conf 的配置目录下
Xposed
xposed这块是提供了一些api,定制需求替换掉删除线内容即可
参考:https://blog.youkuaiyun.com/qq_35834055/article/details/103256122
libxposed_common.h | 改成你修改后的XposedBridge包名 |
---|---|
CLASS_XPOSED_BRIDGE | 更改前: |
CLASS_ZYGOTE_SERVICE | 更改前: |
CLASS_FILE_RESULT | 更改前: |
xposed.h | 修改 |
---|---|
XPOSED_PROP_FILE | /system/xxx.prop 改成你之前APK时候改的 |
XPOSED_JAR | /system/framework/XXXBridge.jar |
XPOSED_LIB_ART | libxposed_art.so 随便改个名字后面修改会用到 libxxx_art |
XPOSED_CLASS_DOTS_ZYGOTE | |
XPOSED_CLASS_DOTS_TOOLS |
xposed_service.cpp | 改成你修改后的XposedBridge包名 |
---|---|
IMPLEMENT_META_INTERFACE | 更改前: |
xposed_shared.h | 改成你修改后的APK包名 |
---|---|
XPOSED_DIR | 更改前: 更改前: /data/data/ |
ART.mk libxposed_art.cpp | 修改成你定义的AS右键直接改名称 记得把.mk文件里的也改了 |
---|---|
libxposed_art | libtest_art |
执行编译
# !!以下操作在一个terminal中发生
# 进入到android目录,执行初始化环境变量
chmod +x ./build/envsetup.sh
source ./build/envsetup.sh
# 直接执行lunch,如果没有就需要使用apt进行安装即可
lunch
lunch aosp_arm64-eng
# 切换到XposedTools目录 执行构建,如果build.pl执行失败,请参考QA中提到的内容问题
./build.pl -t arm64:25
QA
在perl环境安装过程中有很多问题,基本百度都有解决方案
Q:Can’t locate Config/IniFiles.pm in @INC (you may need to install the Config::IniFiles module)
A:安装模块
perl -MCPAN -e 'install Config::IniFiles'
perl -MCPAN -e 'install File::Tail'
perl -MCPAN -e 'install File::ReadBackwards'
sudo aptitude install Config::IniFiles
sudo aptitude install File::ReadBackwards
sudo aptitude install File::Tail
sudo apt install libconfig-inifiles-perl -y
最终