AOSP Mac平臺編譯

轉(zhuǎn)載聲明

原文地址 作者 發(fā)布時(shí)間 作者主頁
https://www.codeboy.me 小胖軒 2020-04-18 feed, 知乎, github

前言

編譯Android源碼是一個(gè)相對容易的事件,有存儲空間和合適的編譯環(huán)境即可。最近想查看一些應(yīng)用的布局(Layout), 需要修改Android系統(tǒng)的debuggable屬性,這個(gè)操作需要設(shè)備具有root權(quán)限,想著自己有一臺pixel XL,何不編譯個(gè)userdebug版本的rom,除了精簡的的應(yīng)用外,debuggable和root屬性也是直接含有的,后續(xù)有其他地方調(diào)整的話,可以直接修改源碼編譯。

準(zhǔn)備

鑒于Android設(shè)備為pixel XL,查找到最新的rom版本為android-10.0.0_r17,開始初始化代碼環(huán)境:

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

    這里有一點(diǎn)需要注意,如果需要外置硬盤存放源碼,請不要使用exfat格式,因?yàn)閑xfat不支持軟連接(文章地址),盡量使用hfs和apfs,同時(shí)選擇區(qū)分大小寫的磁盤格式。

  2. 更新的初始化包
    使用初始化包更加方便,減少同步中因?yàn)榫W(wǎng)絡(luò)問題引起的中斷
    wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下載初始化包
    tar xf aosp-latest.tar  # 解壓縮
    

    下載初始化包過程大概持續(xù)了大約3h,網(wǎng)速基本上維持在10M/s左右。

  3. 同步對應(yīng)分支tag代碼
    cd AOSP   # 解壓得到的 AOSP 工程目錄
    ~/bin/repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-10.0.0_r17
    # 這時(shí) ls 的話什么也看不到,因?yàn)橹挥幸粋€(gè)隱藏的 .repo 目錄
    ~/bin/repo sync # 正常同步一遍即可得到完整目錄
    
  4. 設(shè)備驅(qū)動(dòng)
    下載設(shè)備驅(qū)動(dòng),執(zhí)行對應(yīng)文件后,將生成的目錄到根目錄( AOSP)即可。
    https://developers.google.com/android/drivers#marlinqp1a.191005.007.a3
  5. 源碼調(diào)整
    為了能夠在mac平臺上編譯,需要調(diào)整部分配置:
    • 系統(tǒng)版本
      添加當(dāng)前系統(tǒng)支持,筆者電腦升級到了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  # 初始化環(huán)境變量
lunch aosp_marlin-userdebug  # 編譯pixel XL對應(yīng)rom, pixel XL對應(yīng)設(shè)備內(nèi)部名為marlin
make -j8 # 開始編譯

在2015款mbp上大概持續(xù)了6個(gè)小時(shí)

燒入

#!/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

小結(jié)

之前編譯aosp基本上都在ubuntu系統(tǒng)上,最新的代碼對mac已經(jīng)做了更好的適配,可以方便的編譯出系統(tǒng)鏡像。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容