"); //-->
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/
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
16C5X_XX的烧写器的软硬件资料
了解职业生涯周期性 确定你的职业座标
如何使用LabVIEW测试、控制以及嵌入式应用
学习如何设置新型单板RIO系统
如何帮LiDAR在汽车中选择合适的位置
[原创]nRF403射频和接收应用电路图
NEC MCU 78F0513D开发板使用教程
21IC Ebook之《51系列指令表》
打造身临其境的汽车音频体验
[原创]ARM仿真器全国最低价
LabVIEW概念演示介绍
国产高性能MCU开发的PDU方案在智能汽车上的应用案例
BMS电池管理系统三种均衡控制算法的区别与应用场景
[原创]原创] 禾元电子ARM仿真器的优势——不买你会后悔的
芯驰X9SP和汽车麦克风助力打造无缝驾驶体验
2004年1月MSP430研讨会相关演讲资料
高算力MCU开发,实现多屏交互与毫秒级响应功能的汽车仪表盘方案
[分享]8051在无线SoC的大潮中焕发青春
调频TDA7088集成电路应用
[原创]禾元电子推出三星2410开发板-------1500.00
基于国产高性能MCU开发设计的智能汽车前灯控制器方案
调制电路与解调电路
16c5x编程
LabVIEW 8.6 新特性
TH71102 FSK/FM/ASK 433/315MHz接收器
实现芯片全国产化的汽车座椅控制器方案
超声波接收电路
汽车传感系统架构:借助传感获取安全
16c5xbcPIC16C5X单片机编程指南
射频功率放大器的前馈线性化技术介绍