xposed编译系类文章
xposed源码编译--源码及工具概述
xposed源码编译--第一步android源码编译以及环境配置
xposed源码编译--第2步编译XposedBridge
xposed源码编译--第3步编译XposedInstall.apkXposed源码编辑&安装--第4步di自定义Xposed框架(涉及商业机密仅罗列大纲,细节暂时不便公开,细节放在有道云)
欢迎我今日关注今日头条号--可以私信哦
今日头条--牵手生活
https://www.toutiao.com/c/user/2754992843/#mid=1563033596209153
编译xposed环境
- ubuntu16.04
- jdk (Android 4.4之前使用oracle jdk;android5.1源码编译需要使用openjdk7,不再使用oracle的jdk;android6.0源码编译需要使用openjdk8)
- gradle 4.6
编译xposed可能涉及的工具
- envsetup.sh :Android源码自带的编译环境
- XposedTools:Xposed官方提供编译Xposed源码的工具
XposedTools是官方提供的一套工具集,方便用来编译和打包Xposed框架。
xposedtool编译有arm,arm64,x86三项对应文件夹,里面有两个脚本注意下build.pl和uninstall_build.pl两个perl脚本执行在shell中
git clone https://github.com/rovo89/XposedTools.git复制代码
编译xposed可能涉及的源码
- Android 源码:
- Xposed源码:(git上的Xposed仓库和art仓库)
- XposedBridge源码:
- XposedInstall源码:
- Xposed_art源码:
Xposed的所以源码参见github.com/rovo89
Android 源码
附上华为荣耀源码下载地址
https://club.huawei.com/thread-6741499-1-1.html
复制代码
下载:download-c.huawei.com/download/do…
使用7za x android-XXXX.7z -r -o./命令解压android-4.4.4_r1.7z,android-5.0.2_r1.7z,android-5.1.1_r1.7z,android-6.0.1_r72.7z,android-7.0.0_r1.7z,android-7.1.2_r1.7z,如果出现错误请忽略
编译Xposed前,android源码要先编译一次。版本分别arm,arm64,x86对应的,在lunch时分别选择对应的aosp_arm-eng,aosp_arm64-eng,aosp_x86-eng。
查看源码版本的方法:在源码路径下,查看/build/core/build_id.mk文件中的BUILD_ID即为源码的版本号。
android 源码编译4步骤
#下载并解压android源码
#初始化编译环境---命令是用来将envsetup.sh里的所有用到的命令加载到环境变量里去
source build/envsetup.sh
#选择版本 ---lunch命令是envsetup.sh里定义的一个命令,用来让用户选择编译项,来定义Product和编译过程中用到的全局变量。
lunch
#编译android源码 ---就是让8个线程让4个核心竞争的执行;如果是16线程则用16
make –j8
复制代码
Xposed源码
Xposed native部分,该部分主要提供给XposedBridge可调用api和调用修改过的android_art的api,还有生成可替换的app_process程序
github.com/rovo89/Xpos…
1. 配置每一个android版本都对应xposed_androidXXXX.zip的xposed压缩包。
2. 除了android4.4,android每一个版本都有对应的xposed_art_androidXXXX.zip的art压缩包。
XposedBridge源码(Android 4.4 用54的eclipse版本,5.0开始用89android studio版)
android4.4的xposedbridge用是xposedbridge-master_54(master分支)和xposedbridge-master_eclipse_54
从https://github.com/rovo89/XposedBridge下载master分支解压出来
androidstudio 导入eclipse项目,选择解压的文件夹
AndroidStudio 编译 XposedBridge 54版-csdn
Android4.4之后的xposedbridge是用xposedbridge-89(art分支)
xposedbaiebridge.jar的编译分成两种一个提供给Xposed的模块开发者api的xposedbaiebridge.jar(给插件用的,就是你的项目调用需要的)
cd aosp_dir/framework/base/cmds/xposed
git clone https://github.com/rovo89/XposedBridge.git复制代码
然后导入Android Studio中,点Build->Rebuild Project,会在app/build/intermediates/transformpreDex/release目录下生成.jar文件,将生成的jar文件重命名为XposedBridge.jar,放入Android源码目录下的out/java/下
注:如果想生成供Xposed模块调用的XposedBridge.jar,则在Android Studio的右侧打开Gradle Project,双击jarStubs就会在app/build/api生成api.jar
XposedInstall源码
xposed 框架安装器,用于安装xposed_art_androidXXXX.zip 和xposed部分的代码到手机。
android4.4对应的xposedinstaller2.7,其他android版本用的是xposedinstaller3.1.5版本。
android4.4之后,android每一个版本都有对应的xposed_art_androidXXXX.zip的art压缩包。
git clone https://github.com/rovo89/XposedInstaller
./gradlew
./gradlew build
# 请使用java 1.8 进行编译复制代码
Xposed_art源码(Android 4.4之后才需要)
用Xposed 的art替换Android 的art :android 4.4之后,Xposed为了支持新的runtime,修改了art的源码.我们需要把原来的art源码替换成Xposed提供的代码。
将Android源码下的art目录移动到其他路径备份,比如Android源码的上层路径。在Android源码目录执行git clone https://github.com/rovo89/android_art -b xposed-nougat-mr2 art,将修改过的android art下载到Android源码根目录。
cd aosp_dir
rm -rf art
git clone https://github.com/rovo89/android_art.git art
cd art
git checkout xposed-lollipop-mr1复制代码
注:如果是android7.1.2选择的分支是xposed-nougat-mr2.
下个目标VirturalXposed或Exposed
研究VirtualXposed或EXposed
https://github.com/android-hacker/VirtualXposed
参考资料
Android 编译Google官方教程https://source.android.com/source/building
AndroidStudio 编译 XposedBridge 54版-csdn
Xposed - General info, versions & changelog