安卓 Android 憑藉其豐富的生態環境,以及快捷的應用開發和分發,獲得了廣泛的市場關注。米爾最新基於 NXP iMX8 處理器的MYD-JX8MX核心板及開發板也提供了Android 9.0支持。下面我們將介紹如從源碼開始編譯安卓Android 9.0。
i.MX8開發板介紹http://www.myir-tech.com/product/myc-jx8mx.htm
部署開發環境
開發前需要在PC安裝好Linux操作系統,推薦使⽤Ubuntu 16.04 64bit發行版,8G內存, 500G以上空閒硬盤。連接網線並配 置好網絡,後續操作需要連接互聯網安裝或下載相關軟件包。可以參考NXP官方文檔 《Android_User's_Guide.pdf》。
替換Ubuntu軟件源 操作步驟如下:
1.備份源 cp /etc/apt/sources.list /etc/apt/sources.list-bak
2.複製16.04清華源內容到此/etc/apt/sources.list 文件。
3.更新源
apt-get update
PS: 如遇到appstream3報錯可以先刪除軟件包,再更新。
安裝必備軟件包
新裝Ubuntu系統還需要安裝一些常用軟件,執行如下命令進行安裝。
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsd l1.2-dev u-boot-tools
sudo apt-get install libsdl1.2-dev xterm sed cvs subversion coreutils texi2html docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff cu rl lzop asciidoc
設置repo文件
repo是用來下載資源文件,存放在03-Tools/Repo 目錄,如下操作將此文件添加到用戶環境中。
mkdir ~/bin
cp ~/03-Tools/Repo/repo ~/bin
chmod a+x ~/bin/repo
export PATH=~/bin:$PATH
配置git
資源下載時需要用到git,如下操作進行基本配置,用戶名和郵箱改成戶名對於名稱。
git config --global user.name "abc123"
git config --global user.email "[email protected]"
git config --list
3. Android系統燒錄和編譯
Android 鏡像編譯需要很多時間,可以用編譯好的鏡像燒錄到開發板來看效果,燒錄採用UUU 燒錄。 這裏本章節會先介紹如何 將鏡像燒錄到EMMC 和 SD 卡中,然後介紹編譯鏡像方法。
3.1 Android鏡像燒錄EMMC方法
編譯好的鏡像位於02-Image 目錄,將android_p9.0.0_2.0.0-ga_image_8mq-myd-MT53D512M32D2DS-053.zip 放到 WINDOWS系統下解壓。
UUU燒錄會建立軟鏈接,所以請用管理員權限打開cmd,如下圖所⽰:
跳轉到解壓目錄中,執行
uuu_imx_android_flash.bat -f imx8mq -a -e -c 7
接下來請確保開發板TF卡槽沒有插如TF卡, typec口一端 接電腦,另一端接底板的tyepC口(J8),撥碼開關設置成 (sw1)LLHL (sw2)HL,然後上電。
燒錄過程如下:
燒錄完後,將撥碼開關設置爲 (sw1)LLHL (sw2) LH 即可啓動。
3.2 Android鏡像燒錄SD方法
編譯好的鏡像位於02-Image 目錄,將android_p9.0.0_2.0.0-ga_image_8mq-myd-MT53D512M32D2DS-053.zip放到 WINDOWS系統下解壓。 UUU燒錄會建立軟鏈接,所以請用管理員權限打開cmd,如下圖所示:
跳轉到解壓目錄中,執行
uuu_imx_android_flash.bat -f imx8mq -a -e -c 7 -t sd
接下來請確保開發板TF卡槽沒有插如TF卡, typec一端 接電腦,另一端接底板的tyepC口(J8),撥碼開關設置成 (sw1)HHLL (sw2)HL,然後上電。
mkdir android_dir
tar -zxf myir_android9.0.0_2.0.0.tar.gz -C android_dir
cd android_dir
source myir_build.sh
myir_build.sh中
snip
#build_bootloader
#build_kernel
#build_dtbo
make -j4 2>&1 | tee build-log.txt
build_bootloader 編譯
uboot build_kernel 編譯
kernel build_dtbo 編譯dtbo文件
make -j4 2>&1 | tee build-log.txt 完整編譯