"); //-->
By Toradex 胡珊逢
簡介
安卓 Android 因其豐富的生態環境,以及快捷的應用開發和分發,獲得了廣泛的市場關注。Toradex最新基于 NXP iMX8 處理器的Apalis iMX8QM 和Colibri iMX8QXP 也提供給了Android 9.0 (Pie) 支持。下面我們將介紹如從源碼開始編譯安卓。
安卓系統目前并非Toradex 官方直接提供技術支持的操作系統,而由合作伙伴 Kynetics 進行移植和維護。并對用戶免費提供源碼下載,結合NXP的發布情況不定期進行升級維護,甚至是 OTA 更新服務和增值技術支持。
構建 Docker 鏡像
安卓編譯是一個很復雜的過程,無論是編譯安卓本身涉及的配置,還是對編譯電腦的性能和網絡(需要從Google服務器下載資源)。因此我們建議采用高性能CPU電腦,空余磁盤空間至少250GB。為了減少對編譯環境的配置的難度,我們提供了 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 .
----------------------------
當編譯完成后可以看到已經生成了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,你可以直接下載并導入。
----------------------------
$ docker load -i android-build.tar
----------------------------
獲取安卓源碼
在Kynetics 網站注冊,24小時內會通過審核。然后下載所需的源碼包。解壓后將其中的fetch_script.sh文件和projects文件夾復制到~/android-build 目錄。從 NXP 網站下載補丁文件,位于BSP, Drivers and Middleware 板塊的P9.0.0_2.0.1_PATCH_ANDROID_SOURCE文件。同樣將其放到~/android-build目錄。我們將在該目錄里使用Docker 鏡像android-build-env編譯安卓。
運行Docker 鏡像
執行下面命令,啟動Docker 鏡像,并將~/android-build掛載到Docker 鏡像的 /android-build 目錄。
----------------------------
$ cd ~/android-build
$ docker run --rm -it -v ${PWD}:/android-build android-build-env bash
----------------------------
你將會看到一個Bash會話終端。
編譯安卓
接下來的編譯操作都將在Docker 鏡像中完成,即上面打開的Bash會話終端。
設置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 服務器上下載。你也可以在Docker鏡像外下載,或者從我們的FTP服務器上下載,然后放在~/android-build目錄中,在Docke鏡像的/android-build目錄中看到。
進入編譯目錄BUILD_HOME
----------------------------
# source fetch_script.sh apalis_8qm-p9.0.0_2.0.1-snapshot-20190726
----------------------------
該過程中將會下載所需編譯工具文件,根據你的網速不同,可能需要數個小時,期間會從眾多的服務器下載資源,包括Google的服務器,請保證網絡的可用性。此時還未開始下載Android系統自身的源代碼。
上述過程結束后,生成以下目錄
----------------------------
# $BUILD_HOME/android_build
----------------------------
如果下載失敗,可以刪除android_build目錄再次嘗試。
然后啟動最后的編譯
----------------------------
# cd $BUILD_HOME/android_build
# source build/envsetup.sh
# lunch apalis_8qm-userdebug
----------------------------
接受Kynetics EULA協議,根據編譯電腦的CPU核數進行編譯
----------------------------
# make -j8
----------------------------
這個過程也將消耗數個小時之多。
期間會下載所有涉及的源代碼,包括從https://android.googlesource.com/下載大量Android 源碼。如果你的網絡帶寬(首次會下載30GB左右的數據)不容樂觀,可以切換國內的鏡像站點。
修改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/" />
----------------------------
詳細的說明請參考網站說明。
在IMX8 上安裝安卓
借助Toradex Easy Installer 可以很方便地在線直接將Android 安裝到IMX8 模塊上。

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

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

選擇Sunflower app。

例程會從github上下載。

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

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

在IMX8運行Sunflower。

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

根據注冊的賬號信息,修改配置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
----------------------------
將配置文件發送到IMX8。重啟后生效。
----------------------------
$ adb push ufConf.conf /sdcard/UpdateFactoryConfiguration/ufConf.conf
----------------------------
總結
通過上面的介紹,您可以很快開啟在IMX8上的安卓應用開發。和手機、平板安卓設備不同,行業設備可能還需要很多的外設通信,如CAN、SPI、I2C等,以及GPIO控制,如果您需要使用這些接口,請聯系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/
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。
相關推薦
坐火車到西藏何時能去?
PI再現產品佳作:TinySwitch-5打破“Tiny”邊界
全球首款!新型手機OLED面板問世:可發聲、會變形
公雞報曉電路
34家廠商車規MCU型號匯總,一圖速覽國產MCU上車進展
光控開關電路
DC-DC導致EMI輻射超標案例
C64x+ 網絡培訓(三)
C64x+ 網絡培訓(一)
光線照度提醒電路
CSM100產品數據手冊
主題:在盛大“探險”的女人
光照變色蠕蟲電路
MCU沒有退路:要么上車,要么出局
DC-DC電感值計算
光敏三極管構成的靈敏光控開關電路
如何理解共模電感?
C64x+ 網絡培訓(五)
青藏路太 美了
PV2700:解鎖IT2700的百通道測試潛能,打造高效智能測試體驗
先進的電流和電壓檢測技術如何實現超精密機器人
CSM100嵌入式CAN轉UART芯片的應用實例圖
求2004嵌入式大會27篇演講稿!
CSM100配置軟件
C64x+ 網絡培訓(四)
IT業界最牛的維修
C64x+ 網絡培訓(二)
CrossWorks for ARM快速入門
創新引領,智能賦能|奧芯明攜四大技術矩陣亮劍SEMICON China 2025
CPLD基礎應用教學實驗室建立推薦方案