AOSP 编译和烧写

1. 简介

很多 Android 开发者都会希望编译 Android 源码并刷进自己的手机里面,但网上教程很多都仅仅是告诉你 lunch、make 等等,但你手里有一台设备时却发现,你编译出的镜像由于驱动关系是不能直接烧进手机的。这里整理了一下步骤,帮助大家可以按照流程编译并烧写镜像。

本篇文章以 Pixel 2 && Android 10 为例

2. 环境准备

这块没啥说,官方教程就够了,参考:https://source.android.com/setup/build/initializing 就行了

3. 源码下载

  1. 根据 https://developers.google.com/android/drivers 选择一个设备对应 Android 版本号和驱动,比如我们选择:Android 10.0.0 (QP1A.190711.020),下载驱动,记住 Build 号
    2019-9-12-16-53-40.png

  2. https://source.android.com/setup/start/build-numbers 查找 QP1A.190711.020 对应的分支:android-10.0.0_r2,记住分支名
    2019-9-12-16-56-41.png

  3. 下载 AOSP 源码
    注意在下载 aosp 前要安装 repo 工具,参考:https://source.android.com/setup/build/downloading

mkdir Pixel2
cd Pixel2
repo init -u https://android.googlesource.com/platform/manifest -b android-10.0.0_r2 --depth=1
repo sync -j8
repo start android-10.0.0_r2 --all
  1. 把步骤1中选中的两个驱动下载到 aosp 源码根目录并解压
  2. 分别执行解压后的文件,注意,执行后要同意 License,确保正确解压到 aosp 根目录的 vendor 目录
./extract-qcom-walleye.sh
./extract-google_devices-walleye.sh

4. 源码编译

  1. 在 aosp 源码根目录执行:source build/envsetup.sh(注意,执行前终端请选bash,不要使用zsh等,在终端键入bash回车即可)
  2. 在 aosp 源码根目录执行:lunch
  3. 选择对应的版本,比如 Pixel2 就选择:aosp_walleye-userdebug
  4. 执行:make -j8

5. 镜像烧写

  1. 编译完后,执行:export ANDROID_PRODUCT_OUT=/home/chenhang/source/Pixel2/out/target/product/walleye
  2. 执行:fastboot flashall -w
  3. 烧写完成后,执行:fastboot reboot

6. Gapps 安装

编译出来的 aosp 默认没有 google 全家桶,可以通过以下方式进行安装

  1. https://opengapps.org/ 根据系统版本、芯片类型选择需要的 Gapps 全家桶,可以选 stock 版本
  2. 下载后把全家桶 push 到手机 sdcard(不用解压)
  3. https://twrp.me/devices/ 搜索你的设备,如: https://twrp.me/google/googlepixel2.html
    2019-9-12-17-3-22.png
  4. 下载 twrp.img 后根据截图中的命令,把 twrp 加载到手机, 选择 install 刷入 twrp.zip (这是一个 recovery 版本),重启后,通过 adb reboot recovery 进入 twrp 的recovery 系统
  5. 在手机上选择 install, 选择步骤2中 push 到手机 sdcard 的全家桶,安装结束后选择擦除 dalvik cache 和 cache,重启即可
### 编译 Android 13 AOSP 源码 #### 准备工作环境 为了顺利编译 Android 13 的 AOSP 源码,建议在一个干净的 Ubuntu 20.04 LTS 环境中操作。确保已经安装了必要的依赖包工具链[^3]。 ```bash sudo apt-get update && sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig ``` #### 安装 Repo 工具并初始化仓库 Repo 是 Google 开发的一个 Python 脚本,用于管理多个 Git 项目。通过它可以从 GitHub 或其他托管服务获取整个 Android 源树。 ```bash mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo ``` 创建一个新的文件夹来保存源代码: ```bash mkdir ~/aosp cd ~/aosp repo init -u https://android.googlesource.com/platform/manifest -b android-13.0.0_rXX # XX代表具体的修订版本号 repo sync --no-tags --no-clone-bundle ``` #### 配置构建环境变量 进入源码根目录设置环境变量以便后续命令能够正常执行: ```bash source build/envsetup.sh lunch aosp_arm-eng ``` `lunch` 命令会配置一系列默认参数,其中 `eng` 表示开发者模式,适合调试;而 `userdebug` 则介于两者之间,更接近生产环境但仍保留一些日志输出功能[^1]。 #### 执行实际编译流程 当一切准备就绪后就可以启动编译过程了。这一步可能耗时较长取决于机器性能以及网络状况等因素影响。 ```bash m -j$(nproc) ``` 上述指令利用多线程加速编译速度(`-j`)选项指定了使用的 CPU 核心数,通常设为当前系统的最大核心数量可以加快进度[^4]。 #### 获取编译成果 一旦编译顺利完成,最终生成的镜像文件将会位于 `out/target/product/<device>/` 文件夹内,具体路径视所选设备型号不同有所变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值