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小時才整個同步完。
*** 另外一個方法, 針對大陸國內, 文件說可以用百度雲盤, 我沒有百度帳號, 現在也沒辦法申請, 百度網頁說暫停港澳台民眾的申請。
留言