1. 程式人生 > >Android原始碼:1、下載詳解(支援行動硬碟、mac)—親測成功

Android原始碼:1、下載詳解(支援行動硬碟、mac)—親測成功

文章目錄

1、如果行動硬碟需要格式化

2、建立區分大小寫的磁碟映像

3、設定檔案描述符數量上限

4、下載原始碼

(1)安裝 、開啟Repo

(2)替換國內清華的映象

(3)建立原始碼存放目錄

(4)初始化倉庫

(5)同步原始碼樹

(6)更新完成

第一天【12.05】、【15.47】,然後出現如下中斷

第二天【9.10】、【14.05】,自動中斷

第三天【9.05】

 


現在經常用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/