共计 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 成立以来,以技术为根基、以客户为导向,产品被利用在头部股份制商业银行总行、大型保险公司、运营商总部以及研究院等泛滥客户和多个场景。