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插槽

img

接口如此丰富,是不是有点想搞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的设置:

img

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

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

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

安装 tailscale

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

#执行官方的安装脚本
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 的跑分:

 CPU 型号          : Orange Pi Ai ProCPU 核心数        : 4CPU 缓存          : L1: 0.00 KB / L2: 0.00 KB / L3: 0.00 KBAES-NI指令集      : ✔ EnabledVM-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+虚拟化架构        : DedicatedNAT类型           : Inconclusive
----------------------CPU测试--------------------------> CPU 测试中 (Fast Mode, 1-Pass @ 5sec)1 线程测试(单核)得分:         2060 Scores4 线程测试(多核)得分:         6137 Scores
---------------------内存测试------------------------> 内存测试 Test (Fast Mode, 1-Pass @ 5sec)单线程读测试:        9265.24 MB/s单线程写测试:        8792.92 MB/s

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

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 Scores4 线程测试(多核)得分:          5526 Scores
---------------------内存测试------------------------> 内存测试 Test (Fast Mode, 1-Pass @ 5sec)单线程读测试:          3637.18 MB/s单线程写测试:          2428.83 MB/s

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

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

安装 Docker

在终端里执行:

curl -fsSL https://get.docker.com

安装 Portainer + Jenkins

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

下面开始安装 Portainer:

docker volume create portainer_datadocker 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 的了。

比如容器的管理页面:

img

下面开始安装 Jenkins:

docker volume create jenkins_homedocker 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 额外的命令

img

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

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

开始创建 Android 的 job:

img

创建一个自由风格的 Job:

img

设置代码和分支:

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

img

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

img

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

img

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

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

img

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

结尾

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/337941.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Keil 5】Keil 5下载安装激活到2032年(含MDK、C51、STM32单片机)+附带百度网盘链接

这里写目录标题 安装包、激活文件下载1.双击mdk 514开始安装2.一路点next,信息随便写即可3.激活4.安装STM325.激活c51 安装包、激活文件下载 解压密码:lantongxue 链接:https://pan.baidu.com/s/15Aukt0j1HCFyHBE6whuDeg?pwdsjyh 提取码&…

FreeRtos进阶——中断的内部逻辑

中断与非中断API的区别 BaseType_t xQueueSendToBack(QueueHandle_t xQueue,const void *pvItemToQueue,TickType_t xTicksToWait); BaseType_t xQueueSendToBackFromISR(QueueHandle_t xQueue,const void *pvItemToQueue,BaseType_t *pxHigherPriorityTaskWok…

OceanBase 内存研究(OceanBase 3.2.4.5)

内存结构 从官网的结构图可以看出,一台observer可使用的总内存(memory_limit)包括 系统内存(system_memory) 和 租户内存(sys租户与普通租户) 系统内存 系统内存system_memory 属于 observer 的内部内存,允许其它租户共享使用该内存资源 (root10.0.0.…

丛林生存法则其实就两个字:输出

不管你是在上班,还是在灵活就业,现在的大环境下,你要想活下来,生存下去,一定要记住这两个字:输出。如果你能记住更多的字,那便是持续高水平的输出。 你如果是大厂程序员,你肯定发现…

window安装ffmpeg播放本地摄像头视频

1、安装ffmpeg ffmpeg官方网站:FFmpeg 下载后解压文件夹名为ffmpeg 2、设置环境变量 目录 1、安装ffmpeg 设置环境变量 以F:\software\after\ffmpeg\bin为例 在命令行中输入ffmpeg出现下方代表安装成功 3、通过ffmpeg播放本地电脑摄像头 鼠标右击开始按钮&…

快速排序详讲(两种方法)

目录 原理 实现方式 正常实现 理由 先从右到左,在从左到右 先从左到右,先从右到左 挖坑法 效率 优化 测试 代码 原理 快速排序是将最左侧的数字当作关键数字,将关键数字放在对应位置,且关键数字左侧均大于它&#xff…

Spring Boot 开发 -- 过滤器与拦截器详解

引言 在Web开发中,经常需要对请求进行预处理或在响应后进行后处理,Spring Boot提供了过滤器和拦截器两种机制来实现这一需求。虽然它们都可以用来处理HTTP请求和响应,但在使用场景、执行顺序和配置方式上存在明显的差异。本文将详细讲解Spri…

江苏大信环境科技有限公司:环保领域的开拓者与引领者

2009 年,江苏大信环境科技有限公司在宜兴环保科技工业园成立。自创立之始,该公司便笃定坚守“诚信为本、以质量求生存、以创新谋发展”这一经营理念,全力以赴为客户构建专业的工业有机废气治理整体解决方案,进而成为国家高新技术企…

安全风险 - 组件导出风险

在安全审查中关于组件导出风险是一种常见问题,不同组件都有可能遇到这种问题,而且从一定角度来看的话,如果涉及到三方业务,基本处于无法解决的场景,所以我们需要说明为何无法避免这种风险 组件导出风险能不能规避&…

海康 面阵相机命名规则

海康 面阵相机命名规则 https://www.v-club.com/vCollage/vCollageDetail/516?subjectIdRMse6nPiyo

能不能接受这些坑?买电车前一定要看

图片来源:汽车之家 文 | Auto芯球 作者 | 雷慢 刚有个朋友告诉我,买了电车后感觉被骗了, 很多“坑”都是他买车后才知道的。 不提前研究,不做功课,放着我这个老司机不请教, 这个大冤种他不当谁当&…

Linux系统编程——动静态库

目录 一,关于动静态库 1.1 什么是库? 1.2 认识动静态库 1.3 动静态库特征 二,静态库 2.1 制作静态库 2.2 使用静态库 三,动态库 3.1 制作动态库 3.2 使用动态库一些问题 3.3 正确使用动态库三种方法 3.3.1 方法一&…

ADC数模转换器

一、ADC(Analog-Digital Converter)模拟-数字转换器 1、ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁 2、12位逐次逼近型ADC,1us转换时间 3、输入电压范围:0~3.3V&a…

Oracle dblink 发现Network 等待事件的分析 enq: KO - fast object checkpoint

所有的sql 通过dblink 查询全部等待中, 同一个SQL 20多个session 在跑,等待事件network,可能怀疑是不是网络断开了,导致没有返回 执行sql 如下: BEGIN Xdblink ; END; 去到dblink 所在的db,发现20多个sql在…

远程继电器模块实现(nodemcu D1 + 继电器)

前言 接下来将实现一个远程继电器,实时远程控制和查询的开关状态。用 5v 直流电控制 220v 交流电。 硬件上: 使用 nodemcu D1 和 JQC-3FF-S-Z 继电器。 软件上: 使用 nodejs 作为服务端,和 html 作为客户端。 在开始之前在电脑…

基于Qt GraphicView 解析 CIM/G 电力接线图文件

本文讲述了如何使用Qt的框架来渲染展示标准的CIM/G格式的图形文件,也就是公用信息模型(common information model,CIM)中的G文件部分的内容。这是一种电力系统图形的交换规则,用于电网图形交换。 [by amjieker] CIM/G …

⌈ 传知代码 ⌋ 命名实体识别

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

vue3组件传值---vue组件通过属性,事件和provide,inject进行传值

通过属性传值(父传子) vue的组件具有props自建属性(自定义名称,类似于class,id的属性),通过这个属性,父组件可以向子组件传递参数,从而实现组件之间的信息传递&#xff0…

深入探讨npm、Yarn、pnpm和npx之间的区别

前端生态系统是一个快速发展的领域,充满了各种工具和技术。对于开发人员来说,跟上这些创新可能是一项艰巨的挑战。 在本文中,我们将深入探讨npm、Yarn、pnpm和npx之间的区别,帮助你理解每个工具的不同之处。 包管理器比较 npm …

原码一位乘法(计算机组成原理)

算法原理 每次将1位乘数所对应的部分积与原部分积的“累积和”相加,并移位 设置寄存器 存放部分积累积和、乘积高位存放被乘数存放乘数、乘积低位 法则 乘积的数值位俩数绝对值之积;符号位 位 俩数符号位进行异或,即 p x ⊕ y 步骤 设…