github地址:https://github.com/smart-test-ti/SoloX
SoloX是开源的Android/iOS性能数据的实时采集工具,目前主要功能特点:
💡 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] 下载, 可以尝试使用镜像下载,但是可能不是最新版本。
启动服务自定义IP地址和端口:python -m solox --host={ip} --port={port}
使用python -m solox启动服务后,将自动使用本机默认浏览器打开solox页面。
接入手机设备后,可以在左上方选择设备、应用包名、进程名,并点开始即可开始收集性能数据。本示例以京东读书为例。
停止数据收集,将自动跳转到报告页面,可以查看分析报告、导出、编辑、删除报告。
Android应用性能数据收集:
- from solox.public.apm import APM
-
- from solox.public.common import Devices
-
-
-
- d = Devices()
-
- pids = d.getPid(deviceId='9TM9K236030218xx', pkgName='com.jd.app.reader') # for android
-
-
-
- apm = 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() # MB
-
- flow = apm.collectFlow(wifi=True) # KB
-
- fps = apm.collectFps() # HZ
-
- battery = apm.collectBattery() # level:% temperature:°C current:mA voltage:mV power:w
-
- gpu = 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 APM
-
- from solox.public.common import Devices
-
-
-
- d = Devices()
-
- #only supports one device
-
- apm = APM(pkgName='com.jd.reader', platform='iOS')
-
-
-
- # ************* 收集单个性能指标 ************* #
-
- cpu = apm.collectCpu() # %
-
- memory = apm.collectMemory() # MB
-
- flow = apm.collectFlow(wifi=True) # KB
-
- fps = apm.collectFps() # HZ
-
- battery = apm.collectBattery() # level:% temperature:°C current:mA voltage:mV power:w
-
- gpu = 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报告
- # solox version >= 2.1.5
-
-
-
- macOS/Linux: nohup python3 -m solox &
-
- Windows: start /min python3 -m solox &
- 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&deviceid=00008020-000A6C22022300ccc&pkgname=com.bilibili.app.in&target=cpu
-
-
-
- target in ['cpu','memory','network','fps','battery','gpu']
- http://192.168.0.100:60000/apm/collect?platform=Android&deviceid=9TM9K23603021817&pkgname=com.jd.app.reader&target=cpu
-
- http://192.168.0.100:60000/apm/collect?platform=Android&deviceid=9TM9K23603021817&pkgname=com.jd.app.reader&target=fps
- http://192.168.0.100:60000/apm/collect?platform=iOS&deviceid=00008020-000A6C220223002E&pkgname=com.360buy.jdmobile&target=cpu
-
- http://192.168.0.100:60000/apm/collect?platform=iOS&deviceid=00008020-000A6C220223002E&pkgname=com.360buy.jdmobile&target=fps