SoloX - Android/iOS性能数据实时采集工具

文章目录

一、简介

SoloX是一个可以实时收集Android/iOS性能数据的web工具。 快速定位分析性能问题,提升应用的性能和品质。 无需ROOT/越狱,即插即用。

主要特点:

  • 无需ROOT/越狱: Android设备无需Root,iOS设备无需越狱。有效解决Android和iOS性能的测试和分析挑战。
  • 数据完整性:我们提供CPU、GPU、内存、电池、网络、FPS、卡顿等数据,您可以轻松获取。
  • 精美报告:精美详细的报告分析,无论您身在何处或何时,都可以在何处存储、可视化、编辑、管理和下载使用 SoloX 收集的所有测试用例。
  • 实用的监控设置:监控过程中支持设置报警值、采集时长、在其他PC机上访问移动设备。
  • PK模型 :支持两台移动设备同时对比测试。
    🌱2 设备:在两部不同的手机上测试同一个应用程序。
    🌱2-apps:在具有相同配置的两部手机上测试两个不同的应用程序。
  • 数据收集:支持Python和API收集性能数据,帮助用户轻松集成到自动化测试流程中。

github地址:https://github.com/smart-test-ti/SoloX?tab=readme-ov-file

二、环境要求

  • 安装Python 3.10 + Download
  • 安装adb并配置环境变量(SoloX的adb不一定适合你的电脑)Download

💡 Python 3.6 ~ 3.9,请下载低于2.5.4的solox版本。

💡如果Windows用户需要测试ios,请安装并启动Itunes。Documentation

三、安装部署

默认安装:

bash 复制代码
pip install -U solox    (指定版本:pip install solox=={version})

镜像安装:

bash 复制代码
pip install -i  https://mirrors.ustc.edu.cn/pypi/web/simple -U solox

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

启动服务:python -m solox

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

浏览器建议:谷歌

终端:

四、使用方法

4.1 通过浏览器直接使用

(1)单设备收集

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

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

开始收集数据:

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

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

(2)2-devices: 使用两台不同的设备测试同一个app(需切换到PK Model)

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

(4)iOS操作方法同上

4.2 使用Python收集

python 复制代码
from solox.public.apm import APM
# version : >= 2.8.5,由于本地Python是3.9的,不想重新装一个3.10,所以用的低版本SoloX
# from solox.public.apm import AppPerformanceMonitor
from solox.public.common import Devices

d = Devices()

processList = d.getPid(deviceId='172.16.135.133:5555', pkgName='com.kuaikan.comic')  # for android
print(processList)

apm = APM(pkgName='com.kuaikan.comic', platform='Android', deviceId='172.16.135.133:5555', surfaceview=True)

# 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()  # MB

flow = apm.collectFlow()  # KB

fps = apm.collectFps()  # HZ

battery = apm.collectBattery()  # level:% temperature:°C current:mA voltage:mV power:w

# gpu = apm.collectGpu()  # % only supports ios

# ************* 收集全部的性能指标 ************* #

# if __name__ == '__main__':
#
#     apm = APM(pkgName='com.kuaikan.comic', platform='Android', deviceId='172.16.135.133:5555', surfaceview=True)  # duration : 秒 (持续执行时间) record: 是否录屏(只支持安卓)
#     # apm = APM(pkgName='com.bilibili.app.in.ios', platform='iOS',  deviceId='xxxx',noLog=False, duration=20)
#
#     apm.collectAll()  # 会生成HTML报告

输出结果:

4.3 使用API收集

在后台启动服务:

bash 复制代码
# solox version >= 2.1.5

macOS/Linux: nohup python3 -m solox &
Windows: start /min python3 -m solox &

向api请求apm数据:

bash 复制代码
Android: http://{ip}:{port}/apm/collect?platform=Android&deviceid=ca6bd5a5&pkgname=com.bilibili.app.in&target=cpu
iOS: http://{ip}:{port}/apm/collect?platform=iOS&pkgname=com.bilibili.app.in&target=cpu

target in ['cpu','memory','memory_detail','network','fps','battery','gpu']
相关推荐
louisgeek1 天前
Android MediatorLiveData
android
zhongjiahao1 天前
面试常问的 RunLoop,到底在Loop什么?
ios
锋风1 天前
远程服务器运行Android Studio开发aosp源码
android
测试工坊1 天前
Android UI 卡顿量化——用数据回答"到底有多卡"
android
wvy2 天前
iOS 26手势返回到根页面时TabBar的动效问题
ios
RickeyBoy3 天前
iOS 图片取色完全指南:从像素格式到工程实践
ios
alexhilton3 天前
端侧RAG实战指南
android·kotlin·android jetpack
aiopencode3 天前
使用 Ipa Guard 命令行版本将 IPA 混淆接入自动化流程
后端·ios
二流小码农3 天前
鸿蒙开发:路由组件升级,支持页面一键创建
android·ios·harmonyos
xq95273 天前
Android 手游SDK组件化开发实战指南
android