發表文章

目前顯示的是 3月, 2025的文章

Khadas VIM3 開發板Android的源碼編譯

圖片
 續上篇, 完成源碼的下載後, 如何編譯呢? 首先要把相關的工具準備好, 官網有文章 install-toolchains 說明, 有2個方法, 第一個方法是直接在ubuntu下一些指令, 另一個方法是利用Docker, 把預先弄好的Docker Image抓下來, 再跑起來, 就可以在裡面進行編譯Android源碼的動作。 因為我之前在電腦上已經裝過編譯Orange Pi的Android 12的工具, 不想2個開發板的環境混在一起, 加上想試一下Docker怎麼使用, 所以選擇了第二個方法。 基本上依文件的指令下就可以, 但裝Docker的部份, 若要取得最新的版本, 可能要去查一下Docker的文件。接著取得 wesion / khadas_android:v0.6 這個Image, 然後把它跑起來。 文件上寫下這個指令: sudo docker run --privileged -i -t -v / home / you_name: / home / android wesion / khadas_android:v0.6 bash 全部照抄就可以, 但是/home/you_name:/home/android這個部份要改一下, 前面我們下載Android源碼時, 文件有叫我們建一個工作目錄, 我使用/home/ops/work這個目錄名稱, 所以整個Android源碼的程式都放置在這個目錄下。為了讓Docker跑起來後, 可以存取到Android源碼目錄, 指令的這個部份我改為/home/ops/work:/work (用來取代前面提到的/home/you_name:/home/android)。改成這樣, 下指令, 會看到命令提示字元變成類似: root@3458795s8df812:/work# 這樣就進去Docker這個環境了, 如果要離開, 只要下exit指令就可, 同樣命令提示字元會回到原來的樣子。在這個環境裡下df指令, 就可以看到可以存取的目錄有那些, 我們只要關心是不是有/work這個目錄就可以了。有的話, cd進去, 然後照著官網的 build-android 文件做就可以。 以編譯Android 9 64位元為例: 分為2個步驟: 1. 先編譯bootloader $ cd /home $ cd bootloader / ubo...

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 r...

Orange Pi Zero 2W開發板, 自行編譯好的Android 12映像檔, 如何燒到SD卡, 才能成功開機?

圖片
 Orange Pi官方網站, 可以找到Orange Pi Zero 2W的使用手冊, 一個370頁的PDF檔案, 其中有一個章節提到如何編譯Android 12的原始檔, 如下圖: 第一步是下載原始檔, 由官網給定的Google Drive:  H618_Android12_Source , 將原始檔下載下來, 因為原始檔太大, 被壓縮後還要分成多個檔案。約40GB的大小, 用100mbps的網速, 也花了半小時以上的時間才完成。接下來依手冊說明操作, 先檢查MD5, 確認檔案沒有缺損問題。就可以把多個檔案合併回一個壓縮檔了。然後解壓縮成一個原始檔目錄, 再將Orange Pi Zero 2W特定的修改碼(opizero2w_android12_patches.tar.gz)解壓縮後, 複製到原始檔的目錄去。  第二步是編譯原始碼, 如下圖, 手冊是說, 需要一台跑Ubuntu 22.04的電腦, 16GB以上的記憶體, 以及200GB以上的硬碟空間, CPU當然是愈快愈好。 因為我之前剛裝好一台Ubuntu 24.04的電腦, 雖然版本比較新, 可能會碰到一些問題, 但還是先嘗試一下, 看可不可以。果不期然, 在安裝編譯所需的套件時, 就有兩個套件找不到無法安裝: lib32ncurses5-dev和  libncurses5。就先試著安裝libncurses6, 想可能版本有更新, 也許就可以用了。但其實後面就碰到困難, 編譯會失敗! 如下圖, 在 make -j8 這行指令下下去之後, 就出現錯誤。 錯誤訊息是libncurses.so.5檔案不存在之類的, Google了一下, 發現 libncurses-so-5-library-missing-in-ubuntu-22-04-installation-for-arm64-rapsberr 這個討論串, 看來似乎是發問者, 最後自己找到答案, 回來留下了解法。因為他的文字說明, 沒操作過的, 一開始不太能看得懂。我解釋一下: 1. 如果是64位元的Ubuntu, 需先設定i386外國架構(foreight architecture)。 ----> $ sudo dpkg --add-architecture i386 2. 要修改/etc/apt/so...