目录
AOSP
准备工作(配置)
确定机型和版本
初始化
git安装
curl安装
同步源码
环境变量
创建aosp目录
指定同步版本
解下来安装编译需要的依赖
编译aosp源码
刷入系统
AOSP
全称 Android Open Source Project 是指Android开源项目,它是由Google主导的一个开源项目,旨在提供一个完整的、开放的、自由的移动操作系统平台。
为什么要定制自己的安卓系统呢,我们现在用的安卓手机都是基于aosp魔改的,其中许多功能都被厂家限制了,比如root,虽然可以借助面具获取root权限,但是像部分华为手机是不支持解bl锁的,那也就无法root了. 以及root后可能引起的部分软件功能异常,银行类app直接闪退,支付宝无法刷脸.如果可以定制自己的安卓系统,从源码修改,使得adb shell 进入设备的时候就是root权限(这个我会后面单独出一篇关于aosp adb shell就是root权限并隐藏相关指纹绕过root检测),并且抹除相关指纹绕过root检测,达到既有root权限又让app检测不出来的效果.
此外,安卓7以上手机不在信任用户证书,需要把用户证书集成到系统证书里,我们通常可以借助移证书的模块来达到这个效果,但是如果我们定制自己的系统,把想要装的证书直接集成到aosp里,编译好的系统就自带有相关证书,也就不需要借助movecert模块.
并且,很多小厂商喜欢给自己的app加壳,现在的壳从整体加固和抽取加固进化到vmp,已经是越来越难脱壳了,如果可以打造一个自己的脱壳机,通过修改安卓源码,使得app在运行时自动将其加载至内存的代码dump下来实现脱壳。
准备工作(配置)
手机:
- pixel系列
虚拟机(推荐vmware):
- 内存:16G+
- 硬盘:500G空间+
官方推荐的是使用ubantu的系统,如果你用centos可能会出现意想不到的错误,如果你不想遇到千奇百怪的报错就选择ubantu,推荐长期支持版本ubuntu-18.04或者20.04,可以去阿里云的镜像站下载,地址:https://mirrors.aliyun.com/oldubuntu-releases/
安装就不说了,记得安装好后先打一个快照就行了
确定机型和版本
网址:Nexus 和 Pixel 设备的出厂映像 | Google Play services | Google for Developers
首先根据自己的机型选择对应的版本,比如我的pixel 4 ,代号flame,选择QD1A.190821.011这个版本
接着要去寻找aosp拉取源码的版本
地址:https://source.android.com/docs/setup/about/build-numbers
搜索刚刚的QD1A.190821.011版本,记住这个android-10.0.0_r8,后续拉取aosp的版本需要用到这个
接着需要安装相应的驱动,否则你编译好系统刷到手机会卡在bootloader模式,无法进入系统,这个先在主机上下载,后续要用到
初始化
首先要安装一系列工具git curl
git安装
接着配置名字和邮箱,这个可以随便,格式对即可
sudo apt install git -y
git config --global user.name "xxxxxxxxxx"
git config --global user.email "xxxxxx@xxxx.com"
curl安装
git config --global user.name "wupeiqi"
git config --global user.email "wupeiqi@live.com"
同步源码
下载repo + 环境变量 + 可执行权限
mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo
环境变量
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
创建aosp目录
cd ~/bin
mkdir aosp
cd aosp
指定同步版本
就是上面图中的android-10.0.0_r8,这个要换成你对应的版本即可
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r8
同步代码,这个耗时很久
repo sync -j8
最终看到终端输出repo sync has finished successfully即可
解下来安装编译需要的依赖
jdk8
sudo apt install openjdk-8-jdk -y
以及其他依赖
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig -y
驱动安装,把之前在主机上安装的两个驱动解压出来,是两个.sh文件,把他两拖到aosp这个目录里面,接着终端./xx.sh运行这两个文件,最后会让你输入I ACCEPT表示同意许可,之后就会在aosp目录下回生成verdor目录
编译aosp源码
source build/envsetup.sh
lunch
之后选择编号aosp_代号(我的是flame)_uesrdebug,选择数字即可
之后make -j16编译即可
成功的话终端显示build completed successfully
刷入系统
首先要配好adb
地址:https://dl.google.com/android/repository/platform-tools_r30.0.5-linux.zip
下载解压后配好环境变量
sudo adb reboot bootloader 将手机进入bootloader模式,执行一下命令即可等待自动刷入手机
cd ~/bin/aosp
source build/envsetup.sh
sudo ANDROID_PRODUCT_OUT=~bin/aosp/out/target/product/flame(这里选择你的机型) fastboot flashall -w
刷好后的系统长这样,ui是比较粗糙的.
本期aosp编译就到这里了,如果你遇到了报错也欢迎在评论区留言探讨 .