xposed源码编译--源码及工具概述

xposed编译系类文章

xposed源码编译--源码及工具概述
xposed源码编译--第一步android源码编译以及环境配置
xposed源码编译--第2步编译XposedBridge
xposed源码编译--第3步编译XposedInstall.apk

Xposed源码编辑&安装--第4步di自定义Xposed框架(涉及商业机密仅罗列大纲,细节暂时不便公开,细节放在有道云)



欢迎我今日关注今日头条号--可以私信哦


今日头条--牵手生活

https://www.toutiao.com/c/user/2754992843/#mid=1563033596209153



编译xposed环境

  1. ubuntu16.04
  2. jdk (Android 4.4之前使用oracle jdk;android5.1源码编译需要使用openjdk7,不再使用oracle的jdk;android6.0源码编译需要使用openjdk8)
  3. gradle 4.6


编译xposed可能涉及的工具

  1. envsetup.sh  :Android源码自带的编译环境
  2. 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可能涉及的源码


  1. Android 源码:
  2. Xposed源码:(git上的Xposed仓库和art仓库)
  3. XposedBridge源码:
  4. XposedInstall源码:
  5. Xposed_art源码:


Xposed的所以源码参见github.com/rovo89


Android 源码


附上华为荣耀源码下载地址

https://club.huawei.com/thread-6741499-1-1.html
复制代码

荣耀7 开源代码(PLK-AL10&TL01H&UL00&CL00&TL00,Android5.0.2, EMUI3.1,kernel,中国区)

下载: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


你可能感兴趣的:(xposed源码编译--源码及工具概述)