OrangePi AIpro 变身 Android 打包机

主板基本信息介绍

OrangePi AIpro,是香橙派联合华为精心打造,建设人工智能新生态 而设计的一款开发板,这次为大家分享下我上手的这款 OrangePi AIpro 8GB(算力达8TOPS) 的一些小小的经验。

基本参数如下:

  • 支持8GB/16GB的LPDDR4X内存,
  • 2个 HDMI 2.0输出口,USB3.0 x 2,USB Type-C 3.0
  • 千兆网口+Wi-Fi5+BT4.2,BLE
  • 可外接32GB/64GB/128GB/256GB eMMC模块
  • 厉害的来了,支持SATA/NVMe SSD 2280的M.2插槽

接口如此丰富,是不是有点想搞NAS了?

对了,说到算力,16GB内存的型号,算力达到 20 TOPS INT8,啥概念呢?AMD 8845HS 的 NPU算力才 16 TOPS,用 16GB内存的型号跑跑 AI 小模型还是有搞头的。目前已经有其他网友做了相关的测评,大家可以搜搜看。我使用的是 8GB 内存的型号,算力只有 8 TOPS INT8,并且手头没有多余的 NVMe SSD 来提供足够的存储空间,就不献丑了。

我作为一个多年的 Android 开发者,这次基于此开发板,部署一个支持 Android 打包的 Jenkins,Jenkins的部署则是使用 Docker。

基本设置与虚拟组网

关于上手开机、接显示器、登录、设置 Wifi、密钥登录等,这些已经有很多人分享过了,这里唯一要再次分享是WIFI的设置:

大家首次接入键盘鼠标和显示器后,连入WIFI后记得在设置-网络里,设置成上图的样子,勾选 All users may connect to this network ,如果没有设置,你可能会发现退出后,每次都有使用键盘鼠标显示器先登入才能使用 SSH 连接,那可就太麻烦了。

然后,给大家推荐一个虚拟组网的软件:tailscale

有了 tailscle,可以虚拟组网,然后就能任意地点访问到处于家庭或者公司内网的开发板了。

安装 tailscale

先使用 SSH 登录 OrangePi AIpro,或者使用键盘鼠标+显示器登入带桌面的 OrangePi AIpro 并打开终端:

bash 复制代码
#执行官方的安装脚本
curl -fsSL https://tailscale.com/install.sh | sh
#启动软件并设为自启
systemctl start tailscaled
systemctl enable tailscaled
#启动软件,并在链接中登录账号
tailscale up

安装并设置好 tailscale 之后,我们就能在任意地方的电脑上,安装 tailscale 客户端并开启后,就能找到 OrangePi AIpro 在 tailscale 分配的内网 IP,直接使用对应的 SSH 指令即可登入。

跑个分

一切都设置完毕了,咱们先来跑个分看看:

首先是 OrangePi AIpro 的跑分:

bash 复制代码
 CPU 型号          : Orange Pi Ai Pro
 CPU 核心数        : 4
 CPU 缓存          : L1: 0.00 KB / L2: 0.00 KB / L3: 0.00 KB
 AES-NI指令集      : ✔ Enabled
 VM-x/AMD-V支持    : ❌ Disabled
 内存              : 1.09 GiB / 7.37 GiB
 负载              : 17.57, 17.39, 17.22
 系统              : Ubuntu 22.04.4 LTS (aarch64)
 架构              : aarch64 (64 Bit)
 内核              : 5.10.0+
 虚拟化架构        : Dedicated
 NAT类型           : Inconclusive
----------------------CPU测试-------------------------
 -> CPU 测试中 (Fast Mode, 1-Pass @ 5sec)
 1 线程测试(单核)得分:         2060 Scores
 4 线程测试(多核)得分:         6137 Scores
---------------------内存测试-----------------------
 -> 内存测试 Test (Fast Mode, 1-Pass @ 5sec)
 单线程读测试:        9265.24 MB/s
 单线程写测试:        8792.92 MB/s

作为对比的:树莓派4B-8G内存

bash 复制代码
CPU 型号          : Cortex-A72
CPU 核心数        : 4
CPU 缓存          : L1: 128.00 KB / L2: 1.00 MB / L3: 0.00 KB
AES-NI指令集      : ❌ Disabled
VM-x/AMD-V支持    : ❌ Disabled
内存              : 2.63 GiB / 7.63 GiB
硬盘空间          : 30.92 GiB / 58.20 GiB
系统在线时间      : 181 days, 16 hour 40 min
系统              : Ubuntu 22.04.3 LTS (aarch64)
架构              : aarch64 (64 Bit)
内核              : 5.15.0-1043-raspi
虚拟化架构        : Dedicated
----------------------CPU测试-------------------------
 -> CPU 测试中 (Fast Mode, 1-Pass @ 5sec)
 1 线程测试(单核)得分:          1455 Scores
 4 线程测试(多核)得分:          5526 Scores
---------------------内存测试-----------------------
 -> 内存测试 Test (Fast Mode, 1-Pass @ 5sec)
 单线程读测试:          3637.18 MB/s
 单线程写测试:          2428.83 MB/s

CPU 得分稳压 树莓派4B,内存速度更是秒杀。

基于 Docker 的 Jenkins:Android 自动化打包

安装 Docker

在终端里执行:

bash 复制代码
curl -fsSL https://get.docker.com

安装 Portainer + Jenkins

Portainer 是一个简单易用的docker可视化管理工具,可以极大的降低我们使用 Docker 的上手难度,在网页里点点就能管理我们的 Docker 相关的东西。

下面开始安装 Portainer:

bash 复制代码
docker volume create portainer_data

docker run -d --name portainer \
-p 9000:9000  \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:2.20.2

执行完命令,就能进入 OrangePi AIpro 的 http://[IP]:9000 来初始化和使用 portainer 的了。

比如容器的管理页面:

下面开始安装 Jenkins:

bash 复制代码
docker volume create jenkins_home

docker run -d --name jenkins-lts-diy \
--restart on-failure \
-p 18080:8080 \
-v jenkins_home:/var/jenkins_home \
-e ANDROID_HOME="/var/jenkins_home/android_tools/" \
-e ANDROID_SDK_ROOT="/var/jenkins_home/android_tools/" \
-e LANG="C.UTF-8" \
jenkins/jenkins:lts-jdk17

执行完命令就能访问 http://[IP]:18080 来访问 Jenkins 了:

首次打开需要输入一串密码:Portainer 的作用就来了,不需要学习 Docker 额外的命令

参考图中的箭头,点击 Jenkins 容器的日志,就能在日志里看到需要的密码,填入 Jenkins 即可初始化 Jenkins,插件默认系统推荐即可,账号密码自行设置。

到这里就完成了 Jenkins 的安装了。

开始创建 Android 的 job:

创建一个自由风格的 Job:

设置代码和分支:

这次我们使用开源的任务管理的一个 Android APP 的工程:https://github.com/tasks/tasks.git

添加打包的指令:(Jenkins 夜间模式有适配问题)

添加打包的脚本和归档成品:

到这里,Jenkins 的 Job 已经设置完成。保存后回到Job的页面。

接下来点击「立即构建」即可自动下载代码和安装所需 SDK,并打包出 apk。

配合之前的 tailscale,我们就能任意地点打包,通过 tailscale 的后台,还能邀请其他人访问我们的Jenkins打包机。

结尾

OrangePi AIpro 本身性能足够强劲,接口丰富,可以实现很多有价值的功能,欢迎大家一起分享它的玩法。