English | 中文 | FAQ | 使用文档

SoloX

solox preview

## 🔎Preview SoloX - Real-time collection tool for Android/iOS performance data. Quickly locate and analyze performance issues to improve application performance and quality. No need for ROOT/jailbreak, plug and play. ![10 161 9 178_50003__platform=Android lan=en (1)](https://github.com/smart-test-ti/SoloX/assets/24454096/61a0b801-23b4-4711-8215-51cd7bc9dc04) ## 📦Requirements - Install Python 3.10 + [**Download**](https://www.python.org/downloads/) - Install adb and configure environment variables (SoloX's adb may not necessarily fit your computer) [**Download**](https://developer.android.com/studio/releases/platform-tools) 💡 If Windows users need to test ios, install and start Itunes. [**Documentation**](https://github.com/alibaba/taobao-iphone-device) (Not support iOS17) ## 📥Installation ### default ```shell pip install -U solox (pip install solox==version) ``` ### mirrors ```shell pip install -i https://mirrors.ustc.edu.cn/pypi/web/simple -U solox ``` 💡 If your network is unable to download through [pip install -U solox], please try using mirrors to download, but the download of SoloX may not be the latest version. ## 🚀Quickstart ### default ```shell python -m solox ``` ### customize ```shell python -m solox --host=ip --port=port ``` ## 🏴󠁣󠁩󠁣󠁭󠁿Python API ```python # solox version : >= 2.8.5 from solox.public.apm import AppPerformanceMonitor from solox.public.common import Devices d = Devices() processList = d.getPid(deviceId='ca6bd5a5', pkgName='com.bilibili.app.in') # for android print(processList) # ['{pid}:{packagename}',...] apm = AppPerformanceMonitor(pkgName='com.bilibili.app.in',platform='Android', deviceId='ca6bd5a5', surfaceview=True, noLog=False, pid=None, record=False, collect_all=False, duration=0) # apm = AppPerformanceMonitor(pkgName='com.bilibili.app.in', platform='iOS') only supports one device # surfaceview: False = gfxinfo (Developer - GPU rendering mode - adb shell dumpsys gfxinfo) # noLog : False (Save test data to log file) # ************* Collect a performance parameter ************* # cpu = apm.collectCpu() # % memory = apm.collectMemory() # MB memory_detail = apm.collectMemoryDetail() # MB network = apm.collectNetwork(wifi=True) # KB fps = apm.collectFps() # HZ battery = apm.collectBattery() # level:% temperature:°C current:mA voltage:mV power:w gpu = apm.collectGpu() # % disk = apm.collectDisk() thermal = apm.collectThermal() # ************* Collect all performance parameter ************* # if __name__ == '__main__': apm = AppPerformanceMonitor(pkgName='com.bilibili.app.in',platform='Android', deviceId='ca6bd5a5', surfaceview=True, noLog=False, pid=None, record=False, collect_all=True, duration=0) # apm = AppPerformanceMonitor(pkgName='com.bilibili.app.in', platform='iOS', deviceId='xxxx', noLog=False, record=False, collect_all=True, duration=0) #duration: running time (second) #record: record android screen apm.collectAll(report_path=None) # report_path='/test/report.html' # in other python file from solox.public.apm import initPerformanceService initPerformanceService.stop() # stop solox ``` ## 🏴󠁣󠁩󠁣󠁭󠁿Service API ### Start the service in the background ``` # solox version >= 2.1.5 macOS/Linux: nohup python3 -m solox & Windows: start /min python3 -m solox & ``` ### Request performance data from api ```shell 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'] ``` ## 🔥Features * **No ROOT/Jailbreak:** No need of Root for Android devices, Jailbreak for iOS devices. Efficiently solving the test and analysis challenges in Android & iOS performance. * **Data Integrality:** We provide the data about CPU, GPU, Memory, Battery, Network,FPS, Jank, etc., which you may easy to get. * **Beautiful Report:** A beautiful and detailed report analysis, where to store, visualize, edit, manage, and download all the test cases collected with SoloX no matter where you are or when is it. * **Useful Monitoring Settings:** Support setting alarm values, collecting duration, and accessing mobile devices on other PC machines during the monitoring process. * **PK Model:** Supports simultaneous comparative testing of two mobile devices. - 🌱2-devices: test the same app on two different phones. - 🌱2-apps: test two different apps on two phones with the same configuration. * **Collect In Python/API:** Support Python and API to collect performance data, helping users easily integrate into automated testing processes. ## Develop * https://github.com/pallets/flask * https://github.com/tabler/tabler #### debug * remove [solox] moudel in all python file ```python example from solox.view.apis import api change to from view.apis import api ``` * run [python ./solox/debug.py] ```python cd solox python debug.py ``` ## Browser Chrome ## Terminal - windows: PowerShell - macOS:iTerm2 (https://iterm2.com/) ## 💕Thanks - https://github.com/alibaba/taobao-iphone-device - https://github.com/Genymobile/scrcpy