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

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

返回结果:

相关文章:

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

SoloX:Android和iOS性能数据的实时采集工具 github地址:https://github.com/smart-test-ti/SoloX 最新版本:V2.7.6 一、SoloX简介 SoloX是开源的Android/iOS性能数据的实时采集工具,目前主要功能特点: 无需ROOT/越狱…...

【知识点随笔分析 | 第五篇】简单介绍什么是QUIC

前言: 随着互联网的快速发展,传统的基于TCP的协议开始显现出一些局限性。TCP在连接建立和拥塞控制方面存在一定的延迟,这可能导致用户在访问网页、观看视频或玩网络游戏时感受到不必要的等待时间。而QUIC作为一种新兴的传输协议,试…...

vscode ssh 远程免密登录开发

存放代码的机器运行 sshd, vscode 所在机器保证可以通过 ssh 登录服务器vscode 机器通过 ssh-keygen 生成 ssh 公私钥对(已有可以忽略)将客户端的 id_rsa.pub 加入到服务器的鉴权队列 cat id_rsa.pub >> authorized_keysvscode 配置ssh登录即可.ctrlp, remote-ssh: open …...

辅助驾驶功能开发-测试篇(2)-真值系统介绍

1 真值系统概述 1.1 真值评测系统核心应用 快速构建有效感知真值,快速完成感知性能评估,快速分析感知性能缺陷。 主要应用场景包括: 1. 感知算法开发验证: 在算法开发周期中,评测结果可以作为测试报告的一部分,体现算法性能的提升。 2. 遴选供应…...

运行程序时msvcr110.dll丢失的解决方法,msvcr110.dll丢失5的个详细解决方法

在使用电脑的过程中,我们经常会遇到各种问题,其中之一就是 msvcr110.dll 丢失的问题。msvcr110.dll 是 Microsoft Visual C Redistributable 的一个组件,用于支持使用 Visual C 编写的应用程序。如果您的系统中丢失了这个文件,您可…...

已解决 Bug——IndexError: index 3 is out of bounds for axis 0 with size 3问题

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页: 🐅🐾猫头虎的博客🎐《面试题大全专栏》 🦕 文章图文并茂&#x1f996…...

WEB3 solidity 带着大家编写测试代码 操作订单 创建/取消/填充操作

好 在我们的不懈努力之下 交易所中的三种订单函数已经写出来了 但是 我们只是编译 确认了 代码没什么问题 但还没有实际的测试过 这个测试做起来 其实就比较的麻烦了 首先要有两个账号 且他们都要在交易所中有存入 我们还是先将 ganache 的虚拟环境启动起来 然后 我们在项目…...

c++-vector

文章目录 前言一、vector介绍二、vector使用1、构造函数2、vector 元素访问3、vector iterator 的使用4、vector 空间增长问题5、vector 增删查改6、理解vector<vector< int >>7、电话号码的字母组合练习题 三、模拟实现vector1、查看STL库源码中怎样实现的vector2…...

十四天学会C++之第二天(函数和库)

1. 函数的定义和调用 在C中&#xff0c;函数是组织和结构化代码的关键工具之一。它们允许您将一段代码封装成一个可重复使用的模块&#xff0c;这有助于提高代码的可读性和维护性。 为什么使用函数&#xff1f; 函数在编程中的作用不可小觑。它们有以下几个重要用途&#xf…...

蓝桥杯每日一题2023.10.3

杨辉三角形 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 40分写法&#xff1a; 可以自己手动构造一个杨辉三角&#xff0c;然后进行循环&#xff0c;用cnt记录下循环数的个数&#xff0c;看哪个数与要找的数一样&#xff0c;输出cnt #include<bits/stdc.h> using na…...

JavaScript系列从入门到精通系列第十二篇:JavaScript中对象的简介和对象的基本操作以及JavaScript中的属性值和属性名

文章目录 前言 一&#xff1a;对象分类 1&#xff1a;内建对象 2&#xff1a;宿主对象 3&#xff1a;自建对象 二&#xff1a;对象的基本操作 1&#xff1a;创建对象 2&#xff1a;向对象中添加属性 3&#xff1a;读取对象中的属性 4&#xff1a;修改对象中的属性 三…...

OpenCV实现视频的追踪(meanshift、Camshift)

目录 1&#xff0c;meanshift 1.1 算法流程 1.2 算法实现 1.3 代码实现 1.4 结果展示 1&#xff0c;meanshift 1.1 算法流程 1.2 算法实现 1.3 代码实现 import numpy as np import cv2 as cv# 读取视频 cap cv.VideoCapture(video.mp4)# 检查视频是否成功打开 if n…...

并查集详解(原理+代码实现+应用)

文章目录 1. 并查集概念2. 并查集原理2.1 合并2.1 找根 3. 并查集实现3.1 结构定义3.2 FindRoot&#xff08;找根&#xff09;3.3 Union&#xff08;合并&#xff09;3.4 IsInSet&#xff08;判断两个值是否在一个集合里&#xff09;3.5 SetCount&#xff08;并查集中集合个数&…...

第k小的数

补充习题: 第k小的数 问题描述 有两个正整数数列,元素个数分别为 N N N和 M M M.从两个数列中分别任取一个数相乘,这样一共可以得到 N M N\times M NM个数,询问这 N M N\times M NM个数中第 K K K小的数是多少. 数据范围: N , M < 200000 , K < 2.1 ∗ 1 0 10 , …...

基于electron25+vite4创建多窗口|vue3+electron25新开模态窗体

在写这篇文章的时候&#xff0c;查看了下electron最新稳定版本由几天前24.4.0升级到了25了&#xff0c;不得不说electron团队迭代速度之快&#xff01; 前几天有分享一篇electron24整合vite4全家桶技术构建桌面端vue3应用示例程序。 https://www.cnblogs.com/xiaoyan2017/p/17…...

红米手机 导出 通讯录 到电脑保存

不要搞什么 云服务 不要安装什么 手机助手 不要安装 什么app 用 usb 线 连接 手机 和 电脑 手机上会跳出 提示 选择 仅传输文件 会出现下面的 一个 盘 进入 MIUI目录 然后进入 此电脑\Redmi Note 5\内部存储设备\MIUI\backup\AllBackup\20230927_043337 如何没有上面的文件&a…...

常见web信息泄露

一、源码(备份文件)泄露 1、git泄露 Git是一个开源的分布式版本控制系统&#xff0c;在执行git init初始化目录的时候&#xff0c;会在当前目录下自动创建一个.git目录&#xff0c;用来记录代码的变更记录等。发布代码的时候&#xff0c;如果没有把.git这个目录删除&#xff…...

找不到VCRUNTIME140_1.dll怎么办,VCRUNTIME140_1.dll丢失的5个解决方法

在当今的数字时代&#xff0c;我们的生活和工作都离不开电脑。然而&#xff0c;随着科技的发展&#xff0c;我们也会遇到各种各样的问题。其中&#xff0c;VCRUNTIME140_1.dll丢失的问题是许多人都会遇到的困扰。这个问题可能会导致许多应用程序无法正常运行&#xff0c;给我们…...

C#生成自定义海报

安装包 SixLabors.ImageSharp.Drawing 2.0 需要的字体&#xff1a;宋体和微软雅黑 商用的需要授权如果商业使用可以使用方正书宋、方正黑体&#xff0c;他们可以免费商用 方正官网 代码 using SixLabors.Fonts; using SixLabors.ImageSharp; using SixLabors.ImageSharp.Draw…...

BP神经网络的MATLAB实现(含源代码)

BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念&#xff0c;是一种按照误差逆向传播算法训练的多层前馈神经网络&#xff0c;是应用最广泛的神经网络模型之一 具体数学推导以及原理在本文不做详细介绍&#xff0c;本文将使用MATLAB进行B…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)

Name&#xff1a;3ddown Serial&#xff1a;FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名&#xff1a;Axure 序列号&#xff1a;8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...

《Offer来了:Java面试核心知识点精讲》大纲

文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)

目录 &#x1f50d; 若用递归计算每一项&#xff0c;会发生什么&#xff1f; Horners Rule&#xff08;霍纳法则&#xff09; 第一步&#xff1a;我们从最原始的泰勒公式出发 第二步&#xff1a;从形式上重新观察展开式 &#x1f31f; 第三步&#xff1a;引出霍纳法则&…...