Android源码定制(3)——Xposed源码编译详解

本文详细介绍了如何编译Xposed框架的源码,包括XposedBridge的源码下载、编译生成XposedBridge.jar的过程,以及Xposed在Android 6.0上的编译步骤。编译涉及mmm编译、Android Studio编译、XposedBridge、android_art、XposedTools、XposedInstaller等多个模块。在编译过程中,文章提到了可能出现的错误及其解决方案。最后,文章总结了实验经验并提供了参考资料。

一、前言

在上篇帖子中我们完成了Android 6.0 从源码下载到源码编译的全过程,详细可以参考源码编译(1)——Android6.0源码编译详解,本文主要讲解Xposed框架源码编译到源码定制的详细过程,实验环境主要是Android 6.0,在此过程中踩过不少坑,遇到各种问题,好在后面都一一解决了,这个过程中尤其感谢一些大佬的博客贴子,从中学习到了很多。本文将从基于我们编译的Android 6.0,从Xposed源码编译到Xposed源码定制,详细记录全过程。此实验分为两部分:本文Xposed源码编译和下文Xposed源码定制

致谢:

首先感谢世界美景大佬的定制Xposed框架,从里面学习到对Xposed框架特征的修改,但是由于个人水平有限,大佬的贴子不够详细,不能完整复现,经过搜索发现肉丝大佬的基于此的两篇详细的贴子讲解:来自高纬的对抗:魔改XPOSED过框架检测(上)来自高纬的对抗:魔改XPOSED过框架检测(下),本文的Xposed定制详细参考了大佬的贴子,一些bug也是从中得到了解决,而Xposed编译则参考博客:xposed源码编译与集成,关于Xposed安装以及问题解决则参考:学习篇-xposed框架及高版本替代方案

二、Xposed源码编译

1.实验准备

Xposed源码编译的过程中,我们需要详细的了解Xposed中不同模块对应的版本以及适配的Android 版本情况,这样能够帮助我们减少错误,本文实验的环境搭建为:

实验平台: Ubuntu 16.0.4 (运行内存4GB+CPU 4+磁盘300G)
Android源码: android-6.0.1_r1
实验手机: Google nexus5
XposedBridge: XposedBridge-art
XposedInstaller: 3.1.5

2.编译流程

我们在学习Xposed的源码编译之前,我们先了解Xposed个各个模块的含义,详细参考官网:Xposed官网

image-20211001164001995

各个模块的含义(这里参考上文肉丝大佬博客(1)):

XposedInstaller:下载安装Xposed.zip刷机包、下载安装和管理模块
XposedBridge:位于Java层的API提供者,模块调用功能时首先就是到这里,然后再“转发”到Native方法
Xposed:位于Native层的Xposed实际实现,实现方法替换的实际逻辑等功能,主要是在app_process上进行的二次开发
android_art:在原版art上进行的二次开发,目录及文件基本上与原版art相同,稍加修改提供对Xposed的支持
XposedTools:XposedInstaller下载的那个刷机zip包,就是用XposedTools编译打包出来的

我们了解Xposed的各个模块的作用,接着了解一下Xposed框架初始化的工作原理:

image-20211001165501914

Xposed源码编译的流程可以参考下图:

image-20211001163008900

3.XposedBridge

(1)源码下载

我们从官网上下载XposedBridge,这里我们最终下载的是Xposed_art

git clone https://github.com/rovo89/XposedBridge.git

image-20211001163008900

(2)编译生成XposedBridge.jar

我们在生成XposedBridge.jar的过程中有两种方式:mmm编译和Android Studio编译(这里优先推荐使用AndroidStudio编译)

<1>mmm编译

首先我们需要在XposedBridge工程中编写Android.mk文件

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值