"); //-->
By Toradex 胡珊逢
簡介
安卓 Android 因其豐富的生態(tài)環(huán)境,以及快捷的應(yīng)用開發(fā)和分發(fā),獲得了廣泛的市場關(guān)注。Toradex最新基于 NXP iMX8 處理器的Apalis iMX8QM 和Colibri iMX8QXP 也提供給了Android 9.0 (Pie) 支持。下面我們將介紹如從源碼開始編譯安卓。
安卓系統(tǒng)目前并非Toradex 官方直接提供技術(shù)支持的操作系統(tǒng),而由合作伙伴 Kynetics 進行移植和維護。并對用戶免費提供源碼下載,結(jié)合NXP的發(fā)布情況不定期進行升級維護,甚至是 OTA 更新服務(wù)和增值技術(shù)支持。
構(gòu)建 Docker 鏡像
安卓編譯是一個很復(fù)雜的過程,無論是編譯安卓本身涉及的配置,還是對編譯電腦的性能和網(wǎng)絡(luò)(需要從Google服務(wù)器下載資源)。因此我們建議采用高性能CPU電腦,空余磁盤空間至少250GB。為了減少對編譯環(huán)境的配置的難度,我們提供了 Docker 鏡像,里面集成了編譯安卓所需的工具。如果你的Ubuntu電腦之前沒有安裝過 Docker ,可以參考下面命令。
使用apt 安裝:
----------------------------
$ sudo apt-get update
$ sudo apt-get install docker-ce
----------------------------
啟動Docker
----------------------------
$ sudo systemctl enable docker
$ sudo systemctl start docker
----------------------------
建立 docker 用戶組
----------------------------
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
----------------------------
驗證Docker安裝
----------------------------
$ docker run hello-world
----------------------------
在完成Docker安裝后,下載Dockerfile,用其編譯Docker鏡像。
----------------------------
$ docker build -t android-build-env .
----------------------------
當編譯完成后可以看到已經(jīng)生成了android-build-env 鏡像,接下來我們將在這個Docker 鏡像中完成安卓編譯。
----------------------------
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
android-build-env latest 9c9ea78b1f48 2 days ago 1.17GB
gradle jdk8 c7745382f42e 6 days ago 553MB
----------------------------
我們也將該鏡像上傳到了FTP,你可以直接下載并導(dǎo)入。
----------------------------
$ docker load -i android-build.tar
----------------------------
獲取安卓源碼
在Kynetics 網(wǎng)站注冊,24小時內(nèi)會通過審核。然后下載所需的源碼包。解壓后將其中的fetch_script.sh文件和projects文件夾復(fù)制到~/android-build 目錄。從 NXP 網(wǎng)站下載補丁文件,位于BSP, Drivers and Middleware 板塊的P9.0.0_2.0.1_PATCH_ANDROID_SOURCE文件。同樣將其放到~/android-build目錄。我們將在該目錄里使用Docker 鏡像android-build-env編譯安卓。
運行Docker 鏡像
執(zhí)行下面命令,啟動Docker 鏡像,并將~/android-build掛載到Docker 鏡像的 /android-build 目錄。
----------------------------
$ cd ~/android-build
$ docker run --rm -it -v ${PWD}:/android-build android-build-env bash
----------------------------
你將會看到一個Bash會話終端。
編譯安卓
接下來的編譯操作都將在Docker 鏡像中完成,即上面打開的Bash會話終端。
設(shè)置BUILD_HOME變量
----------------------------
# export BUILD_HOME=/android-build
----------------------------
你將可以看到BUILD_HOM 目錄下的文件。
----------------------------
# ls -lh $BUILD_HOME
-rwxrwxr-x 1 gradle gradle 5.3K Aug 27 12:42 fetch_script.sh
-rwxrwxr-x 1 gradle gradle 42M Oct 16 03:06 imx-p9.0.0_2.0.1-ga.tar.gz
drwxrwxr-x 5 gradle gradle 4.0K Oct 4 15:20 projects
----------------------------
配置 git 信息
----------------------------
# git config --global user.email "you@example.com"
# git config --global user.name "Your Name"
----------------------------
下載repo 工具
----------------------------
# mkdir ~/bin
# curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
# chmod a+x ~/bin/repo
# export PATH=${PATH}:~/bin
----------------------------
由于該工具需要從Google 服務(wù)器上下載。你也可以在Docker鏡像外下載,或者從我們的FTP服務(wù)器上下載,然后放在~/android-build目錄中,在Docke鏡像的/android-build目錄中看到。
進入編譯目錄BUILD_HOME
----------------------------
# source fetch_script.sh apalis_8qm-p9.0.0_2.0.1-snapshot-20190726
----------------------------
該過程中將會下載所需編譯工具文件,根據(jù)你的網(wǎng)速不同,可能需要數(shù)個小時,期間會從眾多的服務(wù)器下載資源,包括Google的服務(wù)器,請保證網(wǎng)絡(luò)的可用性。此時還未開始下載Android系統(tǒng)自身的源代碼。
上述過程結(jié)束后,生成以下目錄
----------------------------
# $BUILD_HOME/android_build
----------------------------
如果下載失敗,可以刪除android_build目錄再次嘗試。
然后啟動最后的編譯
----------------------------
# cd $BUILD_HOME/android_build
# source build/envsetup.sh
# lunch apalis_8qm-userdebug
----------------------------
接受Kynetics EULA協(xié)議,根據(jù)編譯電腦的CPU核數(shù)進行編譯
----------------------------
# make -j8
----------------------------
這個過程也將消耗數(shù)個小時之多。
期間會下載所有涉及的源代碼,包括從https://android.googlesource.com/下載大量Android 源碼。如果你的網(wǎng)絡(luò)帶寬(首次會下載30GB左右的數(shù)據(jù))不容樂觀,可以切換國內(nèi)的鏡像站點。
修改aosp-p9.0.0_2.0.0-ga.xml文件。該文件可以在Ubuntu主機上,或者在Docker鏡像中修改。Ubuntu 上位于~/android-build/android_build/.repo/manifests,Docker鏡像位于/android-build/android_build/.repo/manifests。將其中的https://android.googlesource.com/ 使用 https://aosp.tuna.tsinghua.edu.cn/替換。
----------------------------
<remote name="aosp"
fetch="https://aosp.tuna.tsinghua.edu.cn/"
review="https://android-review.googlesource.com/" />
----------------------------
詳細的說明請參考網(wǎng)站說明。
在IMX8 上安裝安卓
借助Toradex Easy Installer 可以很方便地在線直接將Android 安裝到IMX8 模塊上。

在完成了安卓編譯和安裝后,下面我們將簡單介紹如何在IMX8 上開發(fā)一個安卓APP。
硬件連接
通過Ixora 底板上的OTG,將IMX8連接到開發(fā)電腦。

在Ubuntu上安裝adb后即可訪問iMX8 上的安卓系統(tǒng)。
----------------------------
$ sudo apt-get install adb
$ adb shell
apalis_8qm:/ $
----------------------------
Android Studio 配置
下載最新的Android Studio并安裝。在撰寫本文是,Android Studio的默認安裝已經(jīng)選擇了Android 10 SDK,所以需要手動安裝Android 9 的 SDK。Android Studio SDK安裝過程也會訪問Google服務(wù)器,請注意網(wǎng)絡(luò)環(huán)境。
安裝完成進入歡迎界面后,選擇Import an Android code sample

選擇Sunflower app。

例程會從github上下載。

等待Gradle build 結(jié)束。然后點擊右上方的 Run按鍵。

在Connected Devices中選擇Toradex 計算機模塊。

在IMX8運行Sunflower。

使用Update Factory 進行OTA更新
在Update Factory進行注冊試用。

根據(jù)注冊的賬號信息,修改配置ufConf.conf
----------------------------
tenant=<Your Tenant>
url=https://personal.updatefactory.io/
controllerId=<Chosen Controller ID>
gatewayToken=<From System Config>
targetToken=<From Device Details>
apiMode=true
enable=true
updateFactoryServer=true
----------------------------
將配置文件發(fā)送到IMX8。重啟后生效。
----------------------------
$ adb push ufConf.conf /sdcard/UpdateFactoryConfiguration/ufConf.conf
----------------------------
總結(jié)
通過上面的介紹,您可以很快開啟在IMX8上的安卓應(yīng)用開發(fā)。和手機、平板安卓設(shè)備不同,行業(yè)設(shè)備可能還需要很多的外設(shè)通信,如CAN、SPI、I2C等,以及GPIO控制,如果您需要使用這些接口,請聯(lián)系Toradex或者Kynetics。
參考
https://developer.toradex.cn/knowledge-base/how-to-setup-android-build-environment-using-docker
https://www.kynetics.com/docs/2019/Android_Pie_9.0.0_Toradex_i.MX8QM_Apalis_Ixora_B0/
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。
相關(guān)推薦
坐火車到西藏何時能去?
PI再現(xiàn)產(chǎn)品佳作:TinySwitch-5打破“Tiny”邊界
全球首款!新型手機OLED面板問世:可發(fā)聲、會變形
公雞報曉電路
34家廠商車規(guī)MCU型號匯總,一圖速覽國產(chǎn)MCU上車進展
光控開關(guān)電路
DC-DC導(dǎo)致EMI輻射超標案例
C64x+ 網(wǎng)絡(luò)培訓(xùn)(三)
C64x+ 網(wǎng)絡(luò)培訓(xùn)(一)
光線照度提醒電路
CSM100產(chǎn)品數(shù)據(jù)手冊
主題:在盛大“探險”的女人
光照變色蠕蟲電路
MCU沒有退路:要么上車,要么出局
DC-DC電感值計算
光敏三極管構(gòu)成的靈敏光控開關(guān)電路
如何理解共模電感?
C64x+ 網(wǎng)絡(luò)培訓(xùn)(五)
青藏路太 美了
PV2700:解鎖IT2700的百通道測試潛能,打造高效智能測試體驗
先進的電流和電壓檢測技術(shù)如何實現(xiàn)超精密機器人
CSM100嵌入式CAN轉(zhuǎn)UART芯片的應(yīng)用實例圖
求2004嵌入式大會27篇演講稿!
CSM100配置軟件
C64x+ 網(wǎng)絡(luò)培訓(xùn)(四)
IT業(yè)界最牛的維修
C64x+ 網(wǎng)絡(luò)培訓(xùn)(二)
CrossWorks for ARM快速入門
創(chuàng)新引領(lǐng),智能賦能|奧芯明攜四大技術(shù)矩陣亮劍SEMICON China 2025
CPLD基礎(chǔ)應(yīng)用教學(xué)實驗室建立推薦方案