参考资料:
https://developer.sony.com/develop/open-devices/guides/aosp-build-instructions/build-aosp-android-android-11-0-0#tutorial-step-1 //AOSP11

https://lug.ustc.edu.cn/wiki/mirrors/help/aosp/ //清华源笔记

http://liuwangshu.cn/framework/aosp/2-download-aosp.html //刘皇叔

一、环境安装

1.sudo apt-get update #更新软件
2.sudo apt-get install openjdk-11-jdk #安装jdk11
3.sudo apt-get install bison g++-multilib git gperf libxml2-utils make zlib1g-dev zip liblz4-tool libncurses5 libssl-dev bc flex curl python-is-python3 # 各种工具,如果出现有冲突的包,可以去百度等效的包来替换

  1. git config --global user.email "1229106519@qq.com" #git 配置 第5条也是
  2. git config --global user.name "lolita"
  3. mkdir ~/bin #创建bin文件夹
  4. PATH=~/bin:$PATH
  5. curl -sSL 'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo #使用其他源下载repo
  6. chmod a+x ~/bin/repo #修改文件权限
  7. 修改 ~/bin/repo文件 ,REPO_URL 一行替换:REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'

二、下载源码

  1. mkdir aosp #创建工作目录
  2. cd aosp #进入工作目录
  3. repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-12.1.0_r3 #下载源码,并指定分支
  4. repo sync#同步并检出源码
  5. ./repo_update.sh #更新补丁

三、编译源码

3.1 整编

  1. source build/envsetup.sh #初始化环境,该脚本引入其他执行脚本
  2. lunch #选择编译目标

aosp_x86_64-eng编译虚拟机运行的ROM
编译目标的格式为BUILD-BUILDTYPE
BUILD表示编译出的镜像可以运行在什么环境,如aosp为安卓开源项目,arm表示arm架构处理器
BUILDTYPE 指的是编译类型,有以下三种:

  • user:用来正式发布到市场的版本,权限受限,如没有 root 权限,不能 dedug,adb默认处于停用状态。
  • userdebug:在user版本的基础上开放了 root 权限和 debug 权限,adb默认处于启用状态。一般用于调试真机。
  • eng:开发工程师的版本,拥有最大的权限(root等),具有额外调试工具的开发配置。一般用于模拟器。
    1. make installclean && make -j64 # 开始编译,-j代表线程数
    2. emulator #运行虚拟机

3.2 单编

  • mm: 编译当前目录下的模块,不编译其依赖项
  • mmm:编译指定目录下的模块,不编译它所依赖的其它模块。
  • mma:编译当前目录下的模块及其依赖项。
  • mmma:编译指定路径下所有模块,并且包含依赖。

四、打包刷机

新建mkpack打包脚本

  1. cd ./out/target/product/redfin/ && zip image.zip *.img android-info.txt && cp image.zip bootloader.img radio.img /mnt/c/AOSP/

刷机脚本:flash-all.bat

  1. @ECHO OFF
  2. adb reboot bootloader
  3. PATH=%PATH%;"%SYSTEMROOT%\System32"
  4. fastboot flash bootloader bootloader.img
  5. fastboot reboot-bootloader
  6. ping -n 5 127.0.0.1 >nul
  7. fastboot flash radio radio.img
  8. fastboot reboot-bootloader
  9. ping -n 5 127.0.0.1 >nul
  10. fastboot -w update image.zip
  11. echo Press any key to exit...
  12. pause >nul
  13. exit