發布日期:2022-04-26 點擊率:118
關鍵詞: iMX8 Android NXP
摘要:安卓 Android 因其豐富的生態環境,以及快捷的應用開發和分發,獲得了廣泛的市場關注。Toradex最新基于 NXP iMX8 處理器的Apalis iMX8QM 和Colibri iMX8QXP 也提供給了Android 9.0 (Pie) 支持。下面我們將介紹如從源碼開始編譯安卓。
簡介
安卓 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=
url=https://personal.updatefactory.io/
controllerId=
gatewayToken=
targetToken=
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.com/knowledge-base/partner-demo-image-kynetics-android#-apalis-imx6-apalis-imx8qm-v10b-and-colibri-imx8qxp-v10b
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/
下一篇: PLC、DCS、FCS三大控
上一篇: MATLAB和Simulink在航