Blog:
iMX8 安卓Android编译和开发

2019年10月17日星期四

安卓 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 上安装安卓

在完成了安卓编译和安装后,下面我们将简单介绍如何在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.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/

 

 

 

 

 

 

 

 

Author: 胡珊逢,FAE,韬睿(上海),

Leave a comment

Your email ID will be kept confidential. Required fields are marked *



* Your comment will be reviewed and then added. Thank you.

Related Blog

Latest Blog

2020年7月17日星期五
Experimenting with Flutter on Torizon
2020年6月30日星期二
Toradex 嵌入式 Linux 发布跟进 Yocto Project 长期支持
2019年7月17日星期三
Toradex 嵌入式 Linux BSP 3.x 背后的动机
Have a Question?