共计 2741 个字符,预计需要花费 7 分钟才能阅读完成。
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-A53,arm64-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 安装包,并解压缩失去两个文件:pipy 和 libc++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 脚本,在这个脚本中启动了监听在 8081
和 8082
端口的两个服务。第一个服务间接返回 Hi Pipy!
;第二个服务定义了几个 API,能够返回 CPU 以及其余的零碎信息。
pipy.listen(8081, $=>$.serveHTTP(new Message('Hi Pipy!'))) | |
pipy.listen(8082, $ => $.serveHTTP(function (req) { | |
var path = req.head.path | |
if (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: | |
DockObserver | |
SurfaceFlinger | |
accessibility | |
account | |
activity | |
alarm | |
android.security.keystore | |
android.service.gatekeeper.IGateKeeperService | |
appops | |
appwidget | |
assetatlas | |
audio | |
backup | |
battery | |
... |
总结
明天咱们摸索了如何在 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 成立以来,以技术为根基、以客户为导向,产品被利用在头部股份制商业银行总行、大型保险公司、运营商总部以及研究院等泛滥客户和多个场景。