SoloX:Android和iOS性能数据的实时采集工具

SoloX:Android和iOS性能数据的实时采集工具

github地址:https://github.com/smart-test-ti/SoloX

最新版本:V2.7.6

一、SoloX简介

SoloX是开源的Android/iOS性能数据的实时采集工具,目前主要功能特点:

  1. 无需ROOT/越狱: Android设备无需ROOT,iOS设备无需越狱。高效解决Android & iOS性能测试分析难题。
  2. 数据完整性: 可提供FPS、Jank、CPU、GPU、Memory、Battery 、Network等性能参数,这些您都可以轻松获得。
  3. 美观的报告看板: 可随时随地存储、可视化、编辑、管理和下载使用任何版本的SoloX收集的所有测试数据。
  4. 好用的监控设置: 支持在监控过程中设置告警值、收集时长、访问其他PC机器的移动设备。
  5. 比对模式: 支持两台移动设备同时对比测试。
    1. 🌱2-devices: 使用两台不同的设备测试同一个app。
    2. 🌱2-apps: 使用两台配置相同的设备测试两个不同的app。
  6. API收集性能数据: 支持python、API收集性能数据,帮助用户轻松集成在CI/CD流程。

二、环境要求

  1. 安装 Python 3.10 + Download
  2. 安装 adb和配置好环境变量 (SoloX自带的adb不一定适配你的电脑,建议自己安装) Download

💡 Python 3.6 ~ 3.9 , 请安装solox版本低于2.5.4.

💡 如果Windows用户需要测试iOS,请先安装Itunes. 参考

三、安装部署

默认安装:pip install -U solox (指定版本:pip install solox==版本)

指定镜像地址安装:pip install -i Simple Index -U solox

💡 如果网络无法通过 [pip install -U solox] 下载, 可以尝试使用镜像下载,但是可能不是最新版本。

启动服务:python -m solox

启动服务自定义IP地址和端口:python -m solox --host={ip} --port={port}

启动服务后,建议使用谷歌浏览器访问使用。

四、使用方法

(1)通过浏览器直接使用

使用python -m solox启动服务后,将自动使用本机默认浏览器打开solox页面。

接入手机设备后,可以在左上方选择设备、应用包名、进程名,并点开始即可开始收集性能数据。本示例以京东读书为例。

开始收集数据中。

停止数据收集,将自动跳转到报告页面,可以查看分析报告、导出、编辑、删除报告。

查看分析报告,可以另存为html、png文件。

  1. 2-devices: 使用两台不同的设备测试同一个app。

  1. 2-apps: 使用两台配置相同的设备测试两个不同的app。操作方法类似,不再赘述。

但是貌似cpu、内存、网络没数据信息。

iOS设备操作使用方法同上。

(2)使用python收集

Android应用性能数据收集:

from solox.public.apm import APMfrom solox.public.common import Devicesd = Devices()pids = d.getPid(deviceId='9TM9K236030218xx', pkgName='com.jd.app.reader') # for androidapm = APM(pkgName='com.jd.app.reader',platform='Android', deviceId='9TM9K236030218xx',surfaceview=True, noLog=True, pid=None)# apm = APM(pkgName='com.bilibili.app.in', platform='iOS') only supports one device# surfaceview: False = gfxinfo (手机开发者 - GPU渲染模式 - adb shell dumpsys gfxinfo)# noLog : False (为false时才会存储测试数据到log文件中)# ************* 收集单个性能指标 ************* #cpu = apm.collectCpu() # %memory = apm.collectMemory() # MBflow = apm.collectFlow(wifi=True) # KBfps = apm.collectFps() # HZbattery = apm.collectBattery() # level:% temperature:°C current:mA voltage:mV power:wgpu = apm.collectGpu() # % only supports ios# ************* 收集全部的性能指标 ************* #apm = APM(pkgName='com.jd.app.reader',platform='Android', deviceId='9TM9K236030218xx',surfaceview=True, noLog=False, pid=None, duration=20, record=False) # duration : 秒 (持续执行时间) record: 是否录屏(只支持安卓)# apm = APM(pkgName='com.bilibili.app.in.ios', platform='iOS',  deviceId='xxxx',noLog=False, duration=20)if __name__ == '__main__':apm.collectAll() # 会生成HTML报告

输出结果:

iOS应用性能数据收集:

rom solox.public.apm import APMfrom solox.public.common import Devicesd = Devices()#only supports one deviceapm = APM(pkgName='com.jd.reader', platform='iOS')# ************* 收集单个性能指标 ************* #cpu = apm.collectCpu() # %memory = apm.collectMemory() # MBflow = apm.collectFlow(wifi=True) # KBfps = apm.collectFps() # HZbattery = apm.collectBattery() # level:% temperature:°C current:mA voltage:mV power:wgpu = apm.collectGpu() # % only supports ios# ************* 收集全部的性能指标 ************* #apm = APM(pkgName='com.jd.reader', platform='iOS',  deviceId='00008020-000A6C220223002E',noLog=False, duration=20)if __name__ == '__main__':apm.collectAll() # 会生成HTML报告

输出结果:

(3)使用API收集

后台启动服务

# solox version >= 2.1.5macOS/Linux: nohup python3 -m solox &Windows: start /min python3 -m solox &

通过api收集数据:

Android: http://{ip}:{port}/apm/collect?platform=Android&deviceid=ca6bd5a5&pkgname=com.bilibili.app.in&target=cpuiOS: http://{ip}:{port}/apm/collect?platform=iOS&deviceid=00008020-000A6C22022300ccc&pkgname=com.bilibili.app.in&target=cputarget in ['cpu','memory','network','fps','battery','gpu']

以获取安卓应用CPU和fps信息为例。

http://192.168.0.100:60000/apm/collect?platform=Android&deviceid=9TM9K23603021817&pkgname=com.jd.app.reader&target=cpuhttp://192.168.0.100:60000/apm/collect?platform=Android&deviceid=9TM9K23603021817&pkgname=com.jd.app.reader&target=fps

返回结果:

以获取iOS应用CPU和fps信息为例。

http://192.168.0.100:60000/apm/collect?platform=iOS&deviceid=00008020-000A6C220223002E&pkgname=com.360buy.jdmobile&target=cpuhttp://192.168.0.100:60000/apm/collect?platform=iOS&deviceid=00008020-000A6C220223002E&pkgname=com.360buy.jdmobile&target=fps

返回结果:

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美团外卖优惠券小程序 美团优惠券微信小程序 自带流量主模式 带教程

小程序带举牌小人带菜谱流量主模式,挺多外卖小程序的,但是都没有搭建教程 搭建: 1、下载源码,去微信公众平台注册自己的账号 2、解压到桌面 3、打开微信开发者工具添加小程序-把解压的源码添加进去-appid改成自己小程序的 4、…

蓝桥等考Python组别九级007

第一部分:选择题 1、Python L9 (15分) 运行下面程序,可以输出几行“*”?( ) for i in range(0, 3): for j in range(0, 5): print(*, end ) print() 2345 正确答案:B 2、P…

交叉编译和GCC编译器

目录 交叉编译 hello.c文件 提问 GCC编译器 GCC编译过程 GCC常用选项 编译多个文件 预处理 编译 汇编 链接 交叉编译 hello.c文件 #include <stdio.h>int main(int argc, char argv) {if(argc > 2)printf("Hello, %s!\n", argv[1]);elseprintf…

Java基于SSM的校园一卡通系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

540. 有序数组中的单一元素

链接&#xff1a; 540. 有序数组中的单一元素 代码&#xff1a; 方法一&#xff1a;全数组的二分查找 思路和算法 假设只出现一次的元素位于下标 xxx&#xff0c;由于其余每个元素都出现两次&#xff0c;因此下标 xxx 的左边和右边都有偶数个元素&#xff0c;数组的长度是奇…

《C和指针》笔记31:多维数组的数组名、指向多维数组的指针、作为函数参数的多维数组

文章目录 1. 指向多维数组的数组名2. 指向多维数组的指针3. 作为函数参数的多维数组 1. 指向多维数组的数组名 我们知道一维数组名的值是一个指针常量&#xff0c;它的类型是“指向元素类型的指针”&#xff0c;它指向数组的第1个元素。那么多维数组的数组名代表什么呢&#x…

桥梁模板人工费多少钱?

桥梁模板是桥梁工程中不可或缺的一部分&#xff0c;它起到支撑和固定混凝土浇筑的作用。在桥梁建设中&#xff0c;模板人工费用是一个重要的成本因素。那么&#xff0c;桥梁模板人工费到底是多少呢&#xff1f;下面我们来详细了解一下。 首先&#xff0c;需要明确的是&#xff…

全栈开发笔记2:项目部署上线的三种方式

文章目录 最原始的方式宝塔Docker 部署其他 本文为编程导航实战项目学习笔记。 项目部署的三种方式&#xff1a; 最原始方式✅ yum 手动安装 jdk mysql tomcat nginx打包前端项目&#xff0c;放到某个目录&#xff0c;修改 nginx 配置修改线上的 mysql 配置&#xff0c;打包 j…

数据集笔记:OpenCelliD(手机基站开放数据库)

下载数据的方式可见&#xff1a;【数据获取】全球最大手机基站开源数据库 1 读取数据 import pandas as pdpd.read_csv(C:/Users/16000/Downloads/454.csv/454.csv,headerNone,names[radio,mcc,net,area,cell,unit,lon,lat,range,samples,changeable1,created1,updated,AveSi…

【易语言】m3u8下载器源码

前阵子接了个下载视频的小单子&#xff0c;部分视频是m3u8链接的&#xff0c;临时弄了个批量下载器&#xff0c;如图&#xff1a; 这东西网上虽然很多&#xff0c;但还是喜欢自己折腾一下&#xff0c;就直接开源了。代码好不好&#xff0c;只看能不能跑。 原理就是调用ffmpeg&a…

【项目】基于C++11实现的数据库连接池

文章目录 前置知识关键技术点项目背景连接池功能点介绍MySQL Server参数介绍功能设计连接池功能点介绍开发平台选型关于MySQL数据库编程MySQL接口介绍测试表设计Connection设计数据库配置文件mysql.conf日志文件log.hppConnectionPool设计压力测试源码链接:前置知识 关键技术…

VD6283TX环境光传感器驱动开发(4)----移植闪烁频率代码

VD6283TX环境光传感器驱动开发----4.移植闪烁频率代码 闪烁定义视频教学样品申请源码下载开发板设置开发板选择IIC配置串口配置开启X-CUBE-ALS软件包时钟树配置ADC使用定时器触发采样KEIL配置FFT代码配置app_x-cube-als.c需要添加函数 闪烁定义 光学闪烁被定义为人造光源的脉动…

量化交易全流程(六)

本节目录 多因子风险模型 自从股票市场产生以来&#xff0c;大量的学者、业界人员都在研究股票的价格波动究竟是由什么决定的。一个明显的事实是&#xff0c;股票的价格波动一定是由多种因素决定的&#xff0c;比如大盘因素、市值因素和行业因素。对于大盘因素&#xff0c;股…

uniapp项目实践总结(二十七)苹果应用商店上架教程

导语&#xff1a;之前介绍了如何打包一个苹果安装包文件&#xff0c;如果想要上架苹果 ios 应用商店&#xff0c;那么就来这里学习一下方法吧。 目录 准备材料上架步骤审核事项 准备材料 基本信息 构建版本&#xff1a;需要一个 ipa 格式安装包&#xff1b;logo&#xff1a…

一文拿捏Spring之IOC、循环依赖、Spring的设计模式

1.IOC(控制反转)与DI(依赖注入) &#x1f31f;面试题(IOC-DI): IOC控制反转是一种实现对象解耦的思想。传统情况下是采用new的方式来创建对象&#xff0c;这个对象是由我们来直接控制的&#xff0c;但是有了IOC后&#xff0c;我们可以在IOC运行期间通过DI动态的将依赖的对象进…

数组结构与算法

文章目录 数据结构与算法稀疏数组sparse队列单向链表双向链表单向环形列表&#xff1a;CircleSingleLinkedList栈递归排序算法快速排序思路 树赫夫曼树 &#xff08;HuffmanTree&#xff09;二叉排序树&#xff08;Binary sort tree&#xff09;构建二叉树遍历二叉树 平衡二叉树…

分布式架构篇

1、微服务 微服务架构风格&#xff0c;就像是把一个单独的应用程序开发为一套小服务&#xff0c;每个服务运行在自己的进程中&#xff0c;并使用轻量级机制通信&#xff0c;通常是 HTTP API。这些服务围绕业务能力来构建&#xff0c;并通过完全自动化部署机制来独立部署。这些…

【3】c++设计模式——>UML表示类之间的关联关系

关联关系 关联&#xff08;Assocition&#xff09;关系是类与类之间最常见的一种关系&#xff0c;它是一种结构化的关系&#xff0c;表示一个对象与另一个对象之间有联系&#xff0c;如汽车和轮胎、师傅和徒弟、班级和学生等。在UML类图中&#xff0c;用&#xff08;带接头或不…

列表的增删改查和遍历

任务概念 什么是任务 任务是一个参数为指针&#xff0c;无法返回的函数&#xff0c;函数体为死循环不能返回任务的实现过程 每个任务是独立的&#xff0c;需要为任务分别分配栈称为任务栈&#xff0c;通常是预定义的全局数组&#xff0c;也可以是动态分配的一段内存空间&#…

华为云云耀云服务器L实例评测|部署在线影音媒体系统 Jellyfin

华为云云耀云服务器L实例评测&#xff5c;部署在线影音媒体系统 Jellyfin 一、云耀云服务器L实例介绍1.1 云服务器介绍1.2 产品规格1.3 应用场景1.4 支持镜像 二、云耀云服务器L实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Jellyfin3.1 Jellyfin 介绍3.2 Docke…