基于NXP iMX8 进行安卓Android编译和开发

2024-04-19 11:08

本文主要是介绍基于NXP iMX8 进行安卓Android编译和开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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 模块上。

                                              image001.png

 

在完成了安卓编译和安装后,下面我们将简单介绍如何在IMX8 上开发一个安卓APP。

 

 

 

硬件连接

通过Ixora 底板上的OTG,将IMX8连接到开发电脑。

image002.jpg

 

在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

image003.png

选择Sunflower app。

image004.png

 

例程会从github上下载。

image005.png

 

等待Gradle build 结束。然后点击右上方的 Run按键。

image006.png

 

 

在Connected Devices中选择Toradex 计算机模块。

image007.png

 

在IMX8运行Sunflower。

image008.jpg

 

 

使用Update Factory 进行OTA更新

在Update Factory进行注册试用。

image009.png

 

 

根据注册的账号信息,修改配置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/

 

这篇关于基于NXP iMX8 进行安卓Android编译和开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917372

相关文章

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

C++工程编译链接错误汇总VisualStudio

目录 一些小的知识点 make工具 可以使用windows下的事件查看器崩溃的地方 dumpbin工具查看dll是32位还是64位的 _MSC_VER .cc 和.cpp 【VC++目录中的包含目录】 vs 【C/C++常规中的附加包含目录】——头文件所在目录如何怎么添加,添加了以后搜索头文件就会到这些个路径下搜索了 include<> 和 include"" WinMain 和

C/C++的编译和链接过程

目录 从源文件生成可执行文件(书中第2章) 1.Preprocessing预处理——预处理器cpp 2.Compilation编译——编译器cll ps:vs中优化选项设置 3.Assembly汇编——汇编器as ps:vs中汇编输出文件设置 4.Linking链接——链接器ld 符号 模块,库 链接过程——链接器 链接过程 1.简单链接的例子 2.链接过程 3.地址和

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

Windwos +vs 2022 编译openssl 1.0.2 库

一 前言 先说 结论,编译64位报错,查了一圈没找到解决方案,最后换了32位的。 使用qt访问web接口,因为是https,没有openssl库会报错 QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());if (reply){if (reply->error() == QNetworkReply::NoError

Eclipse+ADT与Android Studio开发的区别

下文的EA指Eclipse+ADT,AS就是指Android Studio。 就编写界面布局来说AS可以边开发边预览(所见即所得,以及多个屏幕预览),这个优势比较大。AS运行时占的内存比EA的要小。AS创建项目时要创建gradle项目框架,so,创建项目时AS比较慢。android studio基于gradle构建项目,你无法同时集中管理和维护多个项目的源码,而eclipse ADT可以同时打开

android 免费短信验证功能

没有太复杂的使用的话,功能实现比较简单粗暴。 在www.mob.com网站中可以申请使用免费短信验证功能。 步骤: 1.注册登录。 2.选择“短信验证码SDK” 3.下载对应的sdk包,我这是选studio的。 4.从头像那进入后台并创建短信验证应用,获取到key跟secret 5.根据技术文档操作(initSDK方法写在setContentView上面) 6.关键:在有用到的Mo

android一键分享功能部分实现

为什么叫做部分实现呢,其实是我只实现一部分的分享。如新浪微博,那还有没去实现的是微信分享。还有一部分奇怪的问题:我QQ分享跟QQ空间的分享功能,我都没配置key那些都是原本集成就有的key也可以实现分享,谁清楚的麻烦详解下。 实现分享功能我们可以去www.mob.com这个网站集成。免费的,而且还有短信验证功能。等这分享研究完后就研究下短信验证功能。 开始实现步骤(新浪分享,以下是本人自己实现

Android我的二维码扫描功能发展史(完整)

最近在研究下二维码扫描功能,跟据从网上查阅的资料到自己勉强已实现扫描功能来一一介绍我的二维码扫描功能实现的发展历程: 首页通过网络搜索发现做android二维码扫描功能看去都是基于google的ZXing项目开发。 2、搜索怎么使用ZXing实现自己的二维码扫描:从网上下载ZXing-2.2.zip以及core-2.2-source.jar文件,分别解压两个文件。然后把.jar解压出来的整个c

android 带与不带logo的二维码生成

该代码基于ZXing项目,这个网上能下载得到。 定义的控件以及属性: public static final int SCAN_CODE = 1;private ImageView iv;private EditText et;private Button qr_btn,add_logo;private Bitmap logo,bitmap,bmp; //logo图标private st