Android原始碼:1、下載詳解(支援行動硬碟、mac)—親測成功
文章目錄
現在經常用mac辦公,於是就準備在mac上面重新下載和編譯一下Android原始碼,以便工作研究之用。又因mac硬碟容量有限,所以下載放在移動硬盤裡面,鑑於最近一直都有人問下載和編譯Android原始碼的問題,並且我上一次寫Android原始碼編譯的文章已經是幾年前在網易部落格寫的,於是就趁這個機會寫篇文章實踐並總結一下。
1、如果行動硬碟需要格式化
需要把行動硬碟格式化成Mac電腦上支援的ExFAT格式,自行搜尋解決!
2、建立區分大小寫的磁碟映像
在預設安裝過程中,Mac OS 會在一個保留大小寫但不區分大小寫的檔案系統中執行。Git 並不支援此類檔案系統,而且此類檔案系統會導致某些 Git 命令(例如 git status)的行為出現異常。因此,建議始終在區分大小寫的檔案系統中對 AOSP 原始檔進行操作。有兩種方式可以建立磁碟映像,具體操作如下:
方式一:使用命令:
由於AOSP比較大,但是我們存放在行動硬碟上,更大的空間能夠更好地滿足未來的需求,所以預留200G+的空間。
可以通過 shell 使用以下命令建立磁碟映像:
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 220g /Volumes/DongZ/aosp/android.dmg
雙擊這個映象,將其掛載。這樣在Mac Finder中就可以看到我們剛剛的建立的映象了。
方式二:使用mac自帶的磁碟工具
開啟磁碟工具
設定空間大小,警記格式標註這欄要選擇Mac OS擴充套件(區分大小寫,日誌式)的卷。點選“儲存”,此時會/Volumes/aosp/下會生成一個android.dmg的映象,雙擊這個映象,將其掛載。這樣在Mac Finder中就可以看到我們剛剛的建立的映象了。
3、設定檔案描述符數量上限
在 Mac OS 中,可同時開啟的檔案描述符的預設數量上限太低,在高度並行的編譯流程中,可能會超出此上限。
ulimit -S -n 2048
4、下載原始碼
Android 原始碼樹位於由 Google 託管的 Git 程式碼庫中。Git 程式碼庫中包含 Android 原始碼的元資料,其中包括與對原始碼進行的更改以及更改日期相關的元資料。下面介紹瞭如何下載特定 Android 程式碼流水線的原始碼樹。
(1)安裝 、開啟Repo
(2)替換國內清華的映象
映象連線:https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/
(3)建立原始碼存放目錄
mkdir /Volumes/DongZ/aosp/WORKING_DIRECTORY 我的是行動硬碟,mac執行會出錯。我就手動在行動硬碟建立了!
然後執行 cd /Volumes/DongZ/aosp/WORKING_DIRECTORY
(4)初始化倉庫
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
報:repo: command not found
Last login: Wed Jan 9 10:20:55 on ttys001
MacBook-Pro:~ luminal$ cd /Volumes/DongZ/aosp/WORKING_DIRECTORY
MacBook-Pro:WORKING_DIRECTORY luminal$ repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
-bash: repo: command not found
MacBook-Pro:WORKING_DIRECTORY luminal$ echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
MacBook-Pro:WORKING_DIRECTORY luminal$ export PATH=$PATH:$HOME/bin
MacBook-Pro:WORKING_DIRECTORY luminal$ repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
warning: gpg (GnuPG) is not available.
warning: Installing it is strongly encouraged.
Get https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/
名字、郵箱
解決警告:
warning: gpg (GnuPG) is not available.
warning: Installing it is strongly encouraged.
gpg不可用,並強烈建議安裝。那就安裝吧!(花了10多分鐘)
brew install gpg
安裝完 gpg後,
切換到原始碼目錄:cd /Volumes/DongZ/aosp/WORKING_DIRECTORY
再次執行初始化試試:repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
說已經有了我的資訊了。進行下一步
(5)同步原始碼樹
(以後只需執行這條命令來同步):
repo sync
curl: (22) The requested URL returned error: 404 Not Found
Server does not provide clone.bundle; ignoring.Server does not provide clone.bundle; ignoring.
可參考:https://blog.csdn.net/YuDBL/article/details/86143963
(6)更新完成
第一天【12.05】、【15.47】,然後出現如下中斷
exited sync due to fetch errors
不管此錯誤,我繼續執行:
repo sync
第二天【9.10】、【14.05】,自動中斷
Syncing work tree 100% done,fetching projects 100% done 同步工作樹100%完成,提取專案100%完成
那麼這些百分比為什麼沒到100%,檔案數還是 688-702,695-702 ?
再試試測試一下,一直執行repo sync命令
第三天【9.05】
結果經過一晚還這樣,有點懵逼的感覺,如下圖:
咋回事?
那就預設下載更新Android原始碼完成了吧。後面時不時再執行repo sync命令!
我們關鍵在用,估計即使沒下載完成也八九不離十了,所以不要糾結這個百分比了吧!我感覺自己是不是有點強迫症了!
Android 原始碼檔案將位於工作目錄中對應的專案名稱下。下載成功後的原始碼目錄:
後期我的同步更新快捷:
切換指定目錄:cd /Volumes/DongZ/aosp/WORKING_DIRECTORY
同步程式碼:repo sync
可參考文章
清華大學開源軟體映象站-Android 映象使用幫助
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
Mac 開啟、編輯 .bash_profile 檔案
https://blog.csdn.net/huxinguang_ios/article/details/78709428
Mac開啟檔案最大數限制修改
https://blog.csdn.net/z1134145881/article/details/52573441/