当前位置: 首页 > news >正文

快速上手:在 Android 设备上运行 Pipy

Pipy 作为一个高性能、低资源消耗的可编程代理,通过支持多种计算架构和操作系统,Pipy 确保了它的通用性和灵活性,能够适应不同的部署环境,包括但不限于云环境、边缘计算以及物联网场景。它能够在 X86、ARM64、海光、龙芯、RISC-V 等架构上运行,支持众多 Linux 发行版,以及 FreeBSD、macOS、Windows 和国产操作系统。

总有用户问起 Pipy 能否运行在 Android 上运行,今天就来探索如何在 Android 平台上运行 Pipy。

环境准备

测试环境:

  • 本地 macOS 地址为 10.1.1.18
  • 安装 Android 命令行工具 adb(macOS 上可通过 brew install android-platform-tools 安装)
  • Android 设备地址为 10.1.1.97 (该设备 CPU 用的是 Cortex-A53arm64-v8a 架构)

在开始之前,确保 Android 设备上已经开启开发者模式。通过 adb connect 命令无线连接到设备。

adb connect 10.1.1.97:5555
connected to 10.1.1.97:5555

可以通过命令查看当前已连接的设备。

adb devices
List of devices attached
10.1.1.97:5555	device

安装 Pipy

接下来 下载 Pipy Android 安装包,并解压缩得到两个文件:pipylibc++shared.so,分别是二进制文件和动态链接库。

通过 adb push 命令将其复制到设备中,这里设备目录我们使用 /data/local/tmp

adb push pipy /data/local/tmp
adb push libc++_shared.so /data/local/tmp

安装完 Pipy 之后,我们通过 adb shell 通过命令行访问设备,并验证 Pipy 运行情况。

LD_LIBRARY_PATH=. ./pipy -v | grep Version
Version     : 0.99.0-2

测试

在 Android 设备上可以通过命令 dumpsys SERVICE_NAME 来获取系统服务信息,有了 Pipy 我们就可以通过 HTTP 来查看系统信息。

下面是一个十几行的 js 脚本,在这个脚本中启动了监听在 80818082 端口的两个服务。第一个服务直接返回 Hi Pipy!;第二个服务定义了几个 API,可以返回 CPU 以及其他的系统信息。

pipy.listen(8081, $=>$.serveHTTP(new Message('Hi Pipy!')))pipy.listen(8082, $ => $.serveHTTP(function (req) {var path = req.head.pathif (path === '/cpu') {var cpuF = pipy.exec('getprop ro.product.cpu.abi').toString().trim('\n')return new Message(cpuF)} else if (path.startsWith('/dump/')) {var service = path.substring(6)var sysInfo = pipy.exec(`dumpsys ${service}`).toString().trim('\n')return new Message(sysInfo)} else {return new Message({status: 400}, 'Bad Request!')}}
))

在设备上新建一个文件,比如 main.js ,将脚本的内容复制进去。

接下来执行命令来启动服务。

LD_LIBRARY_PATH=. ./pipy main.js

你将看到 Pipy 成功启动并监听端口。

2024-02-28 07:21:44.963 [INF] [listener] Listening on TCP port 8081 at 0.0.0.0
2024-02-28 07:21:44.964 [INF] [listener] Listening on TCP port 8082 at 0.0.0.0
2024-02-28 07:21:44.964 [INF] [worker] Thread 0 started

现在可以发起请求来验证了。

curl http://10.1.1.97:8081
Hi Pipy!

查看 CPU 信息。

curl http://10.1.1.97:8082/cpu
arm64-v8a

查看 cpu 占用。

curl -s http://10.1.1.97:8082/dump/cpuinfo | grep -i total
18% TOTAL: 16% user + 1.8% kernel + 0% softirq

也可以通过下面的请求查看当前运行了哪些服务,然后通过 API /dump/SERVICE_NAME 来查看对应服务的信息。

curl http://10.1.1.97:8082/dump/-l
Currently running services:DockObserverSurfaceFlingeraccessibilityaccountactivityalarmandroid.security.keystoreandroid.service.gatekeeper.IGateKeeperServiceappopsappwidgetassetatlasaudiobackupbattery...

总结

今天我们探索了如何在 Android 设备上运行 Pipy,并演示如何通过编程方式使用 HTTP 获取设备的运行状态。通过这个过程,我们不仅可以看到 Pipy 处理网络请求的能力,还能了解到其执行本地命令的功能。

Pipy 提供的 丰富 API 支持 开启了无限的可能性,让我们能够以更灵活、创新的方式利用这个工具。无论是开发者还是技术爱好者,都能通过 Pipy 实现各种复杂的网络交互和数据处理任务,从而充分发挥 Android 设备的潜能。

关于 Flomesh

Flomesh(易衡科技)成立于 2018 年,自主研发并开源了高性能可编程代理 Pipy(https://github.com/flomesh-io/pipy)。以 Pipy 为基础,Flomesh 研发了软件负载均衡、服务网格两款软件产品。为工信部认证的可信云产品、可信开源项目。

Flomesh 核心竞争力来自完全自研的核心组件 Pipy,该组件高性能、高可靠、低延迟、可编程、可扩展、低依赖,采用 C++ 开发,内置自研的 JS 引擎,支持适用 JS 脚本做扩展开发。支持包括 x86、arm、龙芯、海光等硬件 CPU 架构;支持 Linux、FreeBSD、OpenWrt 等多种核心的操作系统。

Flomesh 成立以来,以技术为根基、以客户为导向,产品被应用在头部股份制商业银行总行、大型保险公司、运营商总部以及研究院等众多客户和多个场景。
在这里插入图片描述

http://www.lryc.cn/news/311588.html

相关文章:

  • 【操作系统学习笔记】文件管理1.3
  • 基于springboot+vue的酒店管理系统
  • Linux 相关命令
  • 阿里云搭建私有docker仓库(学习)
  • MySQL数据库基本操作(一)
  • 【暗月安全】2021年渗透测试全套培训视频
  • HTML极速入门
  • Django框架——请求与响应
  • rearrangement-challenge-2022环境使用学习(一)
  • [Uniapp]携带参数跳转界面(两种方法)
  • Scrapy与分布式开发(2.1.2):python常用网络请求库httpx
  • 07. Nginx进阶-Nginx负载均衡
  • windows/linux下其他位置调用指定nodejs脚本报错Error: Cannot find module ‘esm’
  • 2024-03-05 linux 分区老显示满,Use 100%,原因是SquashFS 是一种只读文件系统,它在创建时就已经被填满,所有空间都被使用。
  • 蓝桥杯倒计时 41天 - KMP 算法
  • 《汇编语言》- 读书笔记 - 第13章-int 指令
  • 深入了解 Golang 条件语句:if、else、else if 和嵌套 if 的实用示例
  • 大数据和机器学习在气象预报中的应用-张平文院士
  • C#高级:Winform桌面开发中DataGridView的详解
  • java八股文复习-----2024/03/05----基础---反射,动态代理。序列化
  • 【人工智能】Anthropic发布强大的Claude3对齐GPT-4,大模型杂谈个人感想
  • 基于openKylin与RISC-V的MindSpore AI项目实践
  • 【牛客】VL64 时钟切换
  • Java设计模式——桥连模式
  • 数据结构与算法:堆排序和TOP-K问题
  • 【NR 定位】3GPP NR Positioning 5G定位标准解读(三)
  • 文件操作与IO(3) 文件内容的读写——数据流
  • 《PyTorch深度学习实践》第十一讲卷积神经网络进阶
  • Ansible的playbook的编写和解析
  • [环境配置]ssh连接报错“kex_exchange_identification: read: Connection reset by peer”