MacOS 10.15 下 Android Q 源碼 下載 編譯 詳解

      最近換了臺新的 MacBook Pro 之前沒有在MacOS 下下載過編譯過Android 源碼,這次準備試一試,同時記錄下遇到的問題。

考慮到很多人是爲了深入學習Android 的源碼纔來看這個文章都是新手上車,所以我準備從準備工作圖文 一步步詳細解釋。

準備工作

     1. 硬盤空間,至少150G 建議搞個200G 或者更大 畢竟空間多了沒事。少了就難受了。(下載完大概60G源碼不包含.repo/文件夾 我編譯了一個 x86版本後是 130G 左右,這裏我還是刪除了 .repo 文件的情況下,你可能還喜歡多編譯幾個版本也不一定)本地磁盤不夠 只能外接移動一盤了。

     2.好用的梯子。(好用的梯子記得分享,我用的Veee 平時看個網站還行,下載文件500M寬帶下載起來 100kb)

創建磁盤映像

     1 找到電腦裏的磁盤工具打開

      

   2. 打開之後 桌面頂部工具欄   文件 ->新建窗口-> 空白映像 

            

     這裏要注意劃紅線的部分 特別是 格式不能錯哦。創建好之後我們下載安裝Repo 

下載安裝Repo

     https://source.android.com/setup/build/downloading

     這個網頁有詳細步驟,我當下搬運工

     1.打開終端,輸入以下的命令,創建bin文件夾,並加入到臨時環境變量中:

   mkdir ~/bin       //創建bin文件夾
   PATH=~/bin:$PATH  //將該文件夾路徑加到臨時環境變量中

     2.下載 Repo 啓動器,並確保它可執行

    curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    chmod a+x ~/bin/repo
    

    3.(可選)驗證啓動器與我們的簽名是否匹配:

    gpg --recv-key 8BB9AD793E8E6153AF0F9A4416530D5E920F5C65
    curl https://storage.googleapis.com/git-repo-downloads/repo.asc | gpg --verify - ~/bin/repo
    

   初始化 Repo 客戶端

   1.創建一個空目錄來存放您的工作文件。如果您使用的是 MacOS,必須在區分大小寫的文件系統中創建該目錄。這一步先cd 到你創建的映像文件下

    cd /Volumes/ASOP  //cd 到創建的ASOP
    mkdir WORKING_DIRECTORY //創建一個文件夾
    cd WORKING_DIRECTORY //進入到這個文件夾下
    

  2.使用您的真實姓名和電子郵件地址配置 Git。要使用 Gerrit 代碼審覈工具,您需要一個與已註冊的 Google 帳號相關聯的電子郵件地址。確保這是您可以用來接收郵件的有效地址。您在此處提供的姓名將顯示在您提交的代碼的提供方信息中。(這裏我用的Google的gmail 郵箱。其他郵箱我沒有嘗試)    

    git config --global user.name "Your Name"
    git config --global user.email "[email protected]"
    

 3.運行 repo init 以獲取最新版本的 Repo 及其最新的問題修復。您必須爲清單指定一個網址,該清單用於指定 Android 源代碼中包含的各個代碼庫將位於工作目錄中的什麼位置。

repo init -u https://android.googlesource.com/platform/manifest

這裏 manifest 是默認拉的主分支也就是Google一直在更新的分支。還有很多其他分支 查看分支

查看可切換的分支 
cd .repo/manifests 
git branch -a | cut -d / -f 3 

這裏有很多Release穩定版本。我使用的是 android-10.0.0_r33 這個版本

切換到10.0分支
repo init -b  android-10.0.0_r33

這裏是成功拉取分支的顯示

接下去就是下載 使用repo sync來同步源碼,

repo sync

這裏耗時很長要翻牆 網速非常慢,時間我是不會告訴你們的。反正很久很久。

在這個過程中會報錯好幾次 各種出錯,不要慌 出錯了就  repo sync 重新來,反正會檢查已經下載好的內容不會重複下載。

經過漫長的等待(記得去睡覺電腦開着就行,不要天真的等在電腦前以爲可以看着他下載完)

看到finished successfully 。很開心 終於下載完了。接下去就是要編譯源碼了

報錯

這裏repo 會有一些問題

1. repo init 時

解決 :網絡代理設置一下,找到網絡偏好設置裏的代理 看一下網絡代理服務器IP 端口

然後

git config --global http.proxy "127.0.0.1:15236"//每個人端口應該不一樣

2.第二個是這個問題 找到這個文件加一行代碼 就能解決。

.

 

源碼編譯

cd /Volumes/ASOP/WORKING_DIRECTORY
source ./build/envsetup.sh
lunch

這三行代碼上去我們看到所有可以編譯的版本

這裏我選擇了23. aosp_x86-eng 首先我們肯定是需要 -eng 版本的 因爲我們要debug 的 另外 電腦CPU 是 x86 架構的,X86模擬器打開速度很快,選擇 arm 的兄弟,邊吃飯邊等吧。

Buildtype 用途
user 有限的權限;適合一般用戶
userdebug 類似user模式,但有root權限和debug能力,適合debug
eng 帶有額外的debug工具的開發配置。

所以我們選擇 

lunch 23

這裏可能之前 先 lunch 了默認 是第一個 會問你 Which would you like? [aosp_arm-eng] 回車之後再lunch 23 

然後 執行

make -j10

使用make -jx 來編譯源碼(x一般取你的cpu核心數*2+2) 我這裏是6核的CPU 我還是選擇了 10 反正CPU性能是死的估計選再大也沒用。

報錯

 1.這裏如果和我一樣新的電腦裝的都是 10.15 的系統,會報錯。

Could not find a supported mac sdk: ["10.10" "10.11" "10.12" "10.13" "10.14"]

vim build/soong/cc/config/x86_darwin_host.go

然後找到

darwinSupportedSdkVersions = []string{
                 "10.10",
                 "10.11",
                 "10.12",
                 "10.13",
                 "10.14",
         }

光標移到10.14 末尾 按 i (insert)加入 "10.15", 然後esc 光標 移到 文件末尾 按大寫的  ZZ   就可以保存退出

2. 第二個報錯是編譯過程中

找到我們源碼 system/sepolicy/tests/文件夾下的 Android.bp 文件

刪除紅色的一行 保存退出 然後重新編譯

最後編譯成功顯示

build completed successfully

表示編譯成功,我們可以啓動模擬器了

source build/envsetup.sh 
lunch
emulator 

 

總結

   基本上Mac  下 Android 源碼的下載和編譯 就是這樣的一個過程 如果編譯完一個版本後想重新編譯一個,可以使用 

 make clobber   

   命令。可以清除之前編譯生成的文件。我們編譯產生的文件都在 out文件夾下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章