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

news2024/11/15 12:11:03

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

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

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

相关文章

(3)(3.2) MAVLink2数据包签名(安全)

文章目录 前言 1 配置 2 使用 3 MAVLink协议说明 前言 ArduPilot 和任务计划器能够通过使用加密密钥添加数据包签名,为空中 MAVLink 传输增加安全性。这并不加密数据,只是控制自动驾驶仪是否响应 MAVLink 命令。 当自动驾驶仪处于激活状态时&#x…

详解:抖音老隋分享的蓝海项目优势

在当前竞争激烈的市场环境中,企业寻求突破和增长变得愈发困难。然而,抖音老隋分享的蓝海项目却为企业提供了一种全新的商业模式,助力企业实现创新和突破。本文将详细解析抖音老隋分享的蓝海项目优势主要有哪些。 首先,抖音老隋分享…

VLAN虚拟局域网络

VLAN的概念和配置: http://t.csdnimg.cn/g39F7http://t.csdnimg.cn/g39F7 实验:

Verilog Coding Styles For Improved Simulation Efficiency论文学习记录

原文基于Verilog-XL仿真器,测试了以下几种方式对仿真效率的影响。 1. 使用 Case 语句而不是 if / else if 语句 八选一多路选择器 case 实现效率比 if / else if 提升 6% 。 2. 如果可以尽量不使用 begin end 语句 使用 begin end 的 ff 触发器比不使用 begin end …

Centos 9 安装 k8s

为了尽可能契合生产环境的部署情况,这里用kubeadm安装集群,同时方便跟随笔记一步步实践的过程,也更加了解k8s的一些特性和基础知识。 先决条件 这里将通过虚拟机安装3台centos stream 9服务器,并组成kubeneters集群(…

【回溯算法】【组合问题】Leetcode 77.组合 216. 组合总和 III

【回溯算法】【回溯算法剪枝】 Leetcode 77.组合 216. 组合总和 III 回溯算法可以解决的问题Leetcode 77.组合解法1 回溯法三部曲,函数参数、终止条件和单层搜索逻辑解法一plus 回溯法剪枝 另一道组合回溯问题 216. 组合总和 III解法:回溯解法&#xff1…

C++设计模式之——享元模式详解和代码案例

文章目录 C中实现享元模式通常涉及以下几个关键部分:一个简单的C代码片段示例享元模式的进一步说明C享元模式代码案例——咖啡店订单系统享元模式在现实世界的应用场景 C中实现享元模式通常涉及以下几个关键部分: 享元模式(Flyweight Patter…

【Linux网络】再谈 “协议“

目录 再谈 "协议" 结构化数据的传输 序列化和反序列化 网络版计算器 封装套接字操作 服务端代码 服务进程执行例程 启动网络版服务端 协议定制 客户端代码 代码测试 使用JSON进行序列化与反序列化 我们程序员写的一个个解决我们实际问题,满…

一手实测【Claude3】 - GPT4啊,你的时代终于要过去了

通过虚拟卡 WildCard 的方式来升级Claude3最快了,大概2分钟就可以开通完成, 而且升级 GPT 4.0 价钱也不贵,虚拟卡一年10美元,Claude3 每个月也才 20美元。如果你觉得Claude3对你可能有帮助,那就赶快来升级吧! Claude3…

这本书太好了!150页就能让你上手大模型应用开发

如果问个问题:有哪些产品曾经创造了伟大的奇迹?ChatGPT 应该会当之无愧入选。仅仅发布 5 天,ChatGPT 就吸引了 100 万用户——当然,数据不是关键,关键是其背后的技术开启了新的 AI 狂潮,成为技术变革的点火…

多功能声学综合馆:革新解决气膜场馆噪音难题

近年来,气膜场馆在各类活动中的广泛应用带来了许多便利,但其内部噪音问题也一直困扰着人们。为了有效解决这一挑战,多功能声学综合馆崭露头角,通过创新的声学技术成为解决气膜场馆噪音问题的独特方案。 在这个嘈杂的世界中&#x…

第三篇【传奇开心果系列】Python的自动化办公库技术点案例示例:深度解读Pandas股票市场数据分析

传奇开心果博文系列 系列博文目录Python的自动化办公库技术点案例示例系列 博文目录前言一、Pandas进行股票市场数据分析常见步骤和示例代码1. 加载数据2. 数据清洗和准备3. 分析股票价格和交易量4. 财务数据分析 二、扩展思路介绍1. 技术指标分析2. 波动性分析3. 相关性分析4.…

MYSQL07高级_Hash结构、平衡二叉树、B树、B+树介绍

文章目录 ①. 全表遍历②. Hash结构③. 平衡二叉搜索树(AVL)④. B树⑤. B树⑥. 时间复杂度 选择的合理性 磁盘的I/O操作次数对索引的使用效率至关重要查找都是索引操作,一般来说索引非常大,尤其是关系型数据库,当数据量比较大的时候,索引的大小有可能几个G甚至更多,为了减少索引…

头像剪切上传

头像剪切上传 文章说明核心Api示例源码效果展示源码下载 文章说明 本文主要为了学习头像裁剪功能,以及熟悉canvas绘图和转文件的相关操作,参考教程(Web渡一前端–图片裁剪上传原理) 核心Api 主要就一个在canvas绘图的操作 context…

【触想智能】工业一体机刷卡应用知识分享

工业一体机刷卡技术是一种高效、稳定、安全的身份认证方式,具有广泛的应用场景和优势。在工业自动化控制、生产过程监测等领域,它已成为必不可少的设备之一。 一、工业一体机刷卡的原理:工业一体机刷卡的原理和普通的刷卡设备类似,都是通过读…

VS2022如何添加行号?(VS2022不显示行号解决方法)

VS2022不显示行号解决方法 VS2022是非常好用的工具,很多同学在初学C/C的时候,都会安装,默认安装好VS2022后,写代码时,在编辑框的窗口左边就有显示行号,如下图所示: 但是有些同学安装好后&#…

阿里云中小企业扶持权益

为企业提供云资源和技术服务,助力企业开启智能时代创业新范式。阿里云推出中小企业扶持权益 上云必备,助力企业长期低成本用云 一、ECS-经济型e实例、ECS u1实例活动规则 活动时间 2023年10月31日0点0分0秒至2026年3月31日23点59分59秒 活动对象 同时满…

GEE:使用Sigmoid激活函数对单波段图像进行变换(以NDVI为例)

作者:CSDN @ _养乐多_ 本文将介绍在 Google Earth Engine (GEE)平台上,对任意单波段影像进行 Sigmoid 变换的代码。并以对 NDVI 影像像素值的变换为例。 文章目录 一、Sigmoid激活函数1.1 什么是 Sigmoid 激活函数1.2 用到遥感图像上有什么用?二、代码链接三、完整代码一…

Tomcat概念、安装及相关文件介绍

目录 一、web技术 1、C/S架构与B/S架构 1.1 http协议与C/S架构 1.2 http协议与B/S架构 2、前端三大核心技术 2.1 HTML(Hypertext Markup Language) 2.2 css(Cascading Style Sheets) 2.3 JavaScript 3、同步和异步 4、…

吴恩达机器学习全课程笔记第七篇

目录 前言 P114-P120 推荐系统 协同过滤 均值归一化 协同过滤的tensorflow实现 查找相关项目 P121-P130 基于内容的过滤 强化学习 P131-P142 状态动作值函数定义 Bellman方程 随机环境 连续状态空间应用实例 前言 这是吴恩达机器学习笔记的第七篇,…