AOSP源码编译以及真机刷入

背景

AOSP作为最伟大的Android开源项目,绝对值得系统开发者和移动安全人员学习,许多Android的脱壳机也是基于修改定制镜像来完成脱壳,因此熟悉AOSP是很有必要的。

目标

完成aosp源码编译,刷入到真机设备

设备环境

ubuntu20.08
pixel

一、环境配置

Git

程序员必备,配置好邮箱和用户

repo

Google发布的专门管理Android代码的工具,AOSP由成千上万个Git项目构成,repo就是负责管理这些众多Git库的。

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

java

sudo apt-get update
sudo apt-get install openjdk-8-jdk

python

sudo apt-get install python

二、源码下载

2.1 aosp源码下载

国内使用清华源下载aosp镜像:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

方式一:

curl -OC - https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
tar xf aosp-latest.tar
cd AOSP   # 解压得到的 AOSP 工程目录

#初始化manifest仓库,并且指定分支tag,详细版本和tag关系可查https://source.android.com/docs/setup/about/build-numbers#source-code-tags-and-builds
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-4.0.1_r1

# 代码同步,从仓库拉取代码,如果嫌慢可以repo sync -c -j8,只同步当前branch,开8个线程
repo sync 

方式二(传统方式):

mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-4.0.1_r1
repo sync

2.2 二进制驱动程序下载

目标设备驱动下载,后续编译需要,build id要对应,https://developers.google.cn/android/drivers

三、编译

3.1 编译依赖库安装

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libssl-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev
sudo apt-get install libncurses5
sudo apt-get install libpng-dev  
sudo apt-get install libssl-dev 
sudo apt-get install libswitch-perl

3.2 二进制驱动执行

解压上面下载的两个驱动文件,是两个shell脚本,放到aosp工程主目录下执行:

sh extract-qcom-sailfish.sh
sh extract-google_devices-sailfish.sh

3.3 lunch环境配置

lunch选择构建目标设备
可以执行lunch后根据提示选择设备(不全)
也可以根据实际目标设备和需求命令,格式lunch product_name-build_variant,具体见官方详细指导choose-a-target,https://source.android.com/docs/setup/build/building#choose-a-target

lunch #选择对应序号

或者

lunch aosp_sailfish-user 

这里build_variant有三种模式:

  • user:用户版本,发布给用户使用的镜像版本,系统最小权限。
  • userdebug:用户版本加入了root访问,调试能力。
  • eng:工程师版本,关闭了一些优化,有额外的调试工具。

3.4 编译

根据电脑性能配置开多个线程配置

make -j24 

四、刷机

设备进入bootloader并且已解锁,刷编译好的镜像

adb reboot bootloader
fastboot flashall -w

参考

https://source.android.com/docs/setup/download/downloading google官方指导aosp下载
https://source.android.com/docs/setup/build/building google官方指导aosp构建
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ 清华源指导aosp构建

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容