Khadas VIM3 開發板的Android源碼下載

 最近在學習Khadas VIM3這個開發板, 特別是跑Android, 第一個問題就是要先下載源碼。官網有文件download-android-source-code說明。以下記錄依文件操作所碰到的問題和思考如何解決, 但可能我的想法也不見得是最好的!

1. 先安裝git-lfs工具

查了一下, git-lfs是git的擴充套件, 針對大型檔案儲存對git造成的問題提供解法, 主要是大型檔案就放在雲端, 本地端就放指標就好。看了git-lfs官網說明, 建議要升到3.6.1版本。Khadas的文件仍叫我們安裝2.3.4的版本。如果要試安裝3.6.1版, 可以使用以下網址連結。

https://github.com/git-lfs/git-lfs/releases/download/v3.6.1/git-lfs-linux-amd64-v3.6.1.tar.gz

下載並解壓縮, 下 sudo ./install.sh 指令, 會出現錯誤訊息, 就下git init指令, 再重下 sudo ./install.sh 就不會有錯誤訊息了。

2. 建立工作目錄, 並下載manifest, 為什麼要下載這個檔案呢? 我問了ChatGPT, 他提到在同步特定Android設備的源碼時, 有些部份是特定廠商的Git Repo(也就是該設備特有的檔案物件), 不同的設備使用不同的manifest檔案來區別要同步的源碼。Khadas VIM3維護了3個不同的Android版本, 我先試用主要維護版本Android 9 64位元版。

下以下指令:

$ repo init -u https://github.com/khadas/android_manifest.git -b khadas-vim3-p-64bit

3. 開始同步源碼, 下 repo sync -c -j4, 這裡我才想到, 為什麼不是用git, 而是用repo呢? 同樣問ChatGPT, 他說repo是Google開發的一種git repo管理工具, 主要用於管理多個git repo的Android源碼。它是git的一個封裝工具, 簡化管理多個git repo的操作。這樣我就理解了, 主要是Android源碼太大, 分散放在不同的git repo, 所以要同步所有源碼時, 總不能每個git repo都去下同步指令吧! 像這裡一樣, 只下repo sync不是簡單多了嗎?

但下了這個指令後, 出現錯誤訊息 fetch-pack: unexpected disconnect while reading sideband packet, Google一下, stackoverflow有人討論相關的問題, 解法是: (在Linux環境下)

export GIT_TRACE_PACKET=1

export GIT_TRACE=1

export GIT_CURL_VERBOSE=1

確實在命令列下了這3個指令後, 再下repo sync -c -j1指令, 系統就開始同步工作, 沒有再看到錯誤訊息了。我不知道-j4會不會比-j1同步的更快, 但是查看網路頻寬, 是已經用滿了。

4. 下拉大型檔案。文件說還要下這個指令:

$ repo forall -c 'git lfs pull'

因為Android源碼相當大, 我上網的頻寬太小, 結果用了33小時才整個同步完。

*** 另外一個方法, 針對大陸國內, 文件說可以用百度雲盤, 我沒有百度帳號, 現在也沒辦法申請, 百度網頁說暫停港澳台民眾的申請。

留言

這個網誌中的熱門文章

D-BUS學習筆記

Cisco Switch學習筆記: EtherChannel

Cisco Switch學習筆記: interface的封包錯誤統計