AOSP Mac平台编译

Posted by Codeboy on April 18, 2020

前言

编译Android源码是一个相对容易的事件,有存储空间和合适的编译环境即可。最近想查看一些应用的布局(Layout), 需要修改Android系统的debuggable属性,这个操作需要设备具有root权限,想着自己有一台pixel XL,何不编译个userdebug版本的rom,除了精简的的应用外,debuggable和root属性也是直接含有的,后续有其他地方调整的话,可以直接修改源码编译。

准备

鉴于Android设备为pixel XL,查找到最新的rom版本为android-10.0.0_r17,开始初始化代码环境:

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

这里有一点需要注意,如果需要外置硬盘存放源码,请不要使用exfat格式,因为exfat不支持软连接(文章地址),尽量使用hfs和apfs,同时选择区分大小写的磁盘格式。

2. 更新的初始化包

使用初始化包更加方便,减少同步中因为网络问题引起的中断

wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
tar xf aosp-latest.tar  # 解压缩

下载初始化包过程大概持续了大约3h,网速基本上维持在10M/s左右。

3. 同步对应分支tag代码
cd AOSP   # 解压得到的 AOSP 工程目录
~/bin/repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-10.0.0_r17
# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
~/bin/repo sync # 正常同步一遍即可得到完整目录
4. 设备驱动

下载设备驱动,执行对应文件后,将生成的目录到根目录( AOSP)即可。

https://developers.google.com/android/drivers#marlinqp1a.191005.007.a3

5. 源码调整

为了能够在mac平台上编译,需要调整部分配置:

  • 系统版本

    添加当前系统支持,笔者电脑升级到了Mac OS Catalina 10.15,添加了10.15版本。

    修改文件: ./build/soong/cc/config/x86_darwin_host.go, diff

      darwinSupportedSdkVersions = []string{
              "10.10",
              "10.11",
              "10.12",
              "10.13",
              "10.14",
              "10.15",  // 增加该行
          }
    
  • Segmentation fault

    修改文件: ./system/sepolicy/tests/Android.bp, diff

      stl: "libc++_static", // 去除该行
    

编译

source ./build/envsetup.sh  # 初始化环境变量
lunch aosp_marlin-userdebug  # 编译pixel XL对应rom, pixel XL对应设备内部名为marlin
make -j8 # 开始编译

在2015款mbp上大概持续了6个小时

烧入

#!/bin/bash
adb reboot bootloader
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash userdata userdata.img
fastboot flash ramdisk ramdisk.img
fastboot flash vendor vendor.img
fastboot erase cache
fastboot reboot

小结

之前编译aosp基本上都在ubuntu系统上,最新的代码对mac已经做了更好的适配,可以方便的编译出系统镜像。

如有任何知识产权、版权问题或理论错误,还请指正。

转载请注明原作者及以上信息。