OrangePi AIpro 变身 Android 打包机

news2024/12/27 17:08:45

主板基本信息介绍

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 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内存

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

在终端里执行:

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

安装 Portainer + Jenkins

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

下面开始安装 Portainer:

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 的了。

比如容器的管理页面:

img

下面开始安装 Jenkins:

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 额外的命令

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.coloradmin.cn/o/1707028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【亲测有效】发现了适用于Mac用户的ChatGPT客户端登陆方法

项目场景: Mac用户的ChatGPT客户端登陆 问题描述 无法使用 解决方案: 1.下载登陆ChatGPT客户端 https://persistent.oaistatic.com/sidekick/public/C...https://persistent.oaistatic.com/sidekick/public/ChatGPT_Desktop_public_latest.dmg 2.登陆…

设计模式 21 备忘录模式 Memento Pattern

设计模式 21 备忘录模式 Memento Pattern 1.定义 备忘录模式是一种行为型设计模式,它允许你将一个对象的状态保存到一个独立的“备忘录”对象中,并在之后恢复到该状态。 2.内涵 主要用于以下场景: 需要保存对象状态以备恢复: 当…

Kubernetes集群调度

一.List-Watch 1.调度约束 Kubernetes 是通过 List-Watch **** 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件,向 APIServer 发送命令,在 Node 节点上面建立 P…

【OCPP】ocpp1.6协议第3.13章节SmartCharging介绍及翻译

目录 3.13 SmartCharging智能充电-概述 智能充电的目标 关键功能 消息类型 负载管理 动态电量配置 总结 3.13 SmartCharging智能充电-译文 3.13.1 Charging Profile Purpose充电配置的目的 3.13.2 Stacking charging profile堆叠充电配置 3.13.3 Combining charging profile pu…

如何在线转换图片的格式?一键修改图片格式的方法

图片是日常生活和工作中的一种常用的内容展示类型,在使用图片的时候不同用途需要使用的图片格式也是不同的,比如我们手中有一张jpg格式图片,但是平台上传要求格式是png,那么怎样才能将jpg转png格式呢?下面将教大家图片…

前端面试:项目细节重难点问题分享

面试官提问:我现在给你出一个项目实际遇到的问题:由于后端比较忙,所以我们这边的列表数据排序需要前端最近实现,那你会怎么实现排序呢? 答:我的回答:确实,数据都是由后端实现的&…

2024年上半年软件设计师试题及答案(回忆版)--选择题

基础知识选择题 基础知识选择题 1,2,3][4,5,6][1,2,3,4,5,6] (总:1分) (注意:括号内的是截止当前题目总分) vlan不能隔绝内外网 (2分) 链路层使用交换机,…

关于已配好java环境但双击无法打开jar包的解决方案

如果你已经装好了 java 环境直接跳到最后看解决方法即可 先说一下你安装的 java 环境,如果完全是默认选项安装,则会安装 jdk 和 jre,并且在安装 jre 时还需要安装目录下为空,其实 jre 的安装是多余的,因为安装的 jdk 里…

Integer包装类

面试题: 自动装箱:把基本数据类型会自动的变成其对应的包装类 自动拆箱:把包装类自动的变成其对象的基本数据类型 package Integer;public class Demo {public static void main(String[] args) {Integer i 10;String binaryString Integer.toBinaryString(i);Str…

pyqt QLineEdit单行文本框控件

pyqt QLineEdit单行文本框控件 介绍效果代码 介绍 QLineEdit 是 PyQt中的一个控件,用于输入和编辑单行文本。它允许用户输入和编辑一行纯文本,并提供了许多有用的功能,如文本验证、密码输入(显示为点或星号)、自动完成…

ICode国际青少年编程竞赛- Python-6级训练场-递归入门

ICode国际青少年编程竞赛- Python-6级训练场-递归入门 1、 def recur(n):# 边界条件if n<1:return# 额外动作Dev.step(n)Dev.turnRight()# 递归调用recur(n-1)recur(8)2、 def recur(n):# 边界条件if n<1:return# 额外动作Dev.step(n)Dev.turnLeft()# 递归调用recur(n-1)…

一些Spring的理解

说说你对Spring的理解 首先Spring是一个生态&#xff1a;可以构建企业级应用程序所需的一切基础设施 但是&#xff0c;通常Spring指的就是Spring Framework&#xff0c;它有两大核心&#xff1a; IOC和DI 它的核心就是一个对象管理工厂容器&#xff0c;Spring工厂用于生产Bea…

初识STM32单片机-TIM定时器

初识STM32单片机-TIM定时器 一、定时器概述二、定时器类型2.1 基本定时器(TIM6和TIM7)2.2 通用定时器(TIM2、TIM3、TIM4和TIM5)2.3 高级定时器(TIM1和TIM8) 三、定时中断基本结构和时基单元工作时序3.1 定时器基本结构3.2 预分频器时序3.3 计数器时序3.3.1 计数器有无预装时序(…

七大获取免费https的方式

想要实现https访问最简单有效的的方法就是安装SSL证书。只要证书正常安装上以后&#xff0c;浏览器就不会出现网站不安全提示或者访问被拦截的情况。下面我来教大家怎么去获取免费的SSL证书&#xff0c;又如何安装证书实现https访问。 一、选择免费SSL证书提供商 有多家机构提…

国产PS插件新选择;StartAI平替中的佼佼者!

前言 在设计的世界里&#xff0c;每一个细节都至关重要。设计师们常常面临时间紧迫、创意受限、工具复杂等挑战。Photoshop虽强大&#xff0c;但繁琐的操作和高昂的成本往往令人望而却步。今天我就为大家介绍一款PSAI插件——StartAI&#xff0c;一款专为Photoshop设计的国产A…

手绘任意波

上位机发送手绘波形数据&#xff0c;下位机接收并输出。 支持 STM32 STC arduino Pico 等多种单片机&#xff0c;内置或外置 DAC 实现。 ​​​​​​​ 篇幅所限&#xff0c;更多内容请访问我的网站&#xff1a; jiangge12.github.io 十二江哥的网站 (jiangge12.github.io)…

什么是期权内在价值?怎么计算?

今天期权懂带你了解什么是期权内在价值&#xff1f;怎么计算&#xff1f;内在价值&#xff0c;也称为内涵价值、内在价格&#xff0c;指的是若期权合约到期&#xff0c;权利方能够赚到的市场价与行权价之间的差价收益。 什么是期权内在价值&#xff1f; 期权的内在价值是指期权…

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

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

R语言学习 - 箱线图一步法

箱线图 - 一步绘制 绘图时通常会碰到两个头疼的问题&#xff1a; 1、有时需要绘制很多的图&#xff0c;唯一的不同就是输入文件&#xff0c;其它都不需要修改。如果用R脚本&#xff0c;需要反复替换文件名&#xff0c;繁琐又容易出错。 (R也有命令行参数&#xff0c;不熟&…

3D开发工具HOOPS在BIM系统中的应用

建筑信息模型是一种革命性的建筑设计、施工和管理方法。它通过创建和利用数字信息来优化建筑项目的设计、施工和运营过程。在这个过程中&#xff0c;3D开发工具HOOPS扮演着至关重要的角色&#xff0c;为BIM系统提供了强大的技术支持和丰富的功能。HOOPS中文网http://techsoft3d…