AOSP Mac平台编译

作者: Ning1994 | 来源:发表于2020-11-13 14:38 被阅读0次

    转载声明

    原文地址 作者 发布时间 作者主页
    https://www.codeboy.me 小胖轩 2020-04-18 feed, 知乎, github

    前言

    编译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已经做了更好的适配,可以方便的编译出系统镜像。

    相关文章

      网友评论

        本文标题:AOSP Mac平台编译

        本文链接:https://www.haomeiwen.com/subject/vyivbktx.html