当前位置: 首页 > 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…...

ZeroAPI:基于订阅与任务感知的AI模型智能路由插件设计与实践

1. 项目概述&#xff1a;ZeroAPI&#xff0c;一个为AI订阅服务而生的智能路由插件如果你和我一样&#xff0c;手头订阅了不止一个AI服务——比如OpenAI的ChatGPT Plus、月之暗面的Kimi、智谱AI的GLM&#xff0c;可能还有MiniMax或者通义千问——那你一定遇到过这个烦恼&#xf…...

观察Taotoken Token Plan套餐在长期项目中的成本控制效果

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 观察Taotoken Token Plan套餐在长期项目中的成本控制效果 对于需要长期、稳定调用大模型API的项目而言&#xff0c;成本的可预测性…...

对比直接使用厂商API,Taotoken在路由容灾上的体验差异

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比直接使用厂商API&#xff0c;Taotoken在路由容灾上的体验差异 1. 引言&#xff1a;服务稳定性的现实挑战 在将大模型能力集成…...

掌握AI专著撰写技巧,借助工具3天完成20万字专著创作!

学术专著的生命力在于逻辑的严谨性&#xff0c;而逻辑论证正是写作中最容易出现问题的地方。专著的撰写必须围绕核心观点展开系统的论证&#xff0c;既需要对每一个论点进行详细的阐述&#xff0c;还要面对不同学派的争议观点&#xff0c;同时保证理论框架的自洽&#xff0c;避…...

告别CubeMX代码洁癖:教你如何把main()函数挪到自己的.c文件里(STM32F4实战)

重构STM32工程的艺术&#xff1a;将main()迁移到自定义文件的实战指南 每次打开CubeMX生成的工程&#xff0c;看到那个被各种初始化代码塞满的main.c文件&#xff0c;你是否也感到一丝不适&#xff1f;作为一名有追求的嵌入式开发者&#xff0c;我们渴望对项目结构拥有绝对掌控…...

从锂电池热失控到锡须短路:高可靠性系统安全工程实践

1. 从“工程恐怖故事”到系统安全文化的反思最近在整理资料时&#xff0c;翻到一篇十多年前的旧文&#xff0c;标题叫《工程恐怖&#xff1a;机毁人亡》。文章汇集了几位航空与国防领域工程师亲历的、令人脊背发凉的真实事故案例。这些故事没有出现在主流新闻的头条&#xff0c…...

内向技术人突破领导力瓶颈:从深度思考到战略沟通的进阶指南

1. 项目概述&#xff1a;内向工程师的“天花板”与破局之路 在技术圈子里待久了&#xff0c;你会发现一个有趣的现象&#xff1a;身边那些能写出精妙算法、搞定复杂架构的工程师&#xff0c;往往在茶水间的闲聊中显得沉默寡言&#xff0c;在大型会议上也更倾向于坐在后排。这并…...

热潮下的冷思考:从OpenClaw“龙虾”困境看AI Agent的理性选择与国产平替

2026年初&#xff0c;开源AI智能体项目OpenClaw&#xff08;俗称“小龙虾”&#xff09;以一种近乎野蛮的方式闯入大众视野。两天内GitHub星标突破17万&#xff0c;线下排队安装&#xff0c;甚至催生了“代装龙虾”的灰色产业。然而&#xff0c;这场技术狂欢的B面&#xff0c;却…...

省下PLC的钱!用海康VC3000工控机GPIO控制LED灯(C# WinForm实战)

海康VC3000工控机GPIO控制实战&#xff1a;低成本替代PLC的完整方案 在工业自动化领域&#xff0c;PLC&#xff08;可编程逻辑控制器&#xff09;长期以来都是控制系统的核心组件。但对于简单的指示灯控制、报警系统或小型继电器控制这类基础应用&#xff0c;动辄数千元的PLC模…...

ncmdumpGUI:解锁网易云音乐NCM文件格式的终极解决方案

ncmdumpGUI&#xff1a;解锁网易云音乐NCM文件格式的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐下载的NCM格式文件无法在其…...