使用纯 python 实现 Instruments 协议,跨平台 (win,mac,linux) 获取 iOS 性能数据

本文介绍了如何使用Python跨平台获取非越狱iOS设备的性能数据,涉及Usbmux、Lockdown、LaunchDaemon、Instruments服务和DTXMessage流等技术。作者分享了实现过程,包括监听usbmuxd、启动服务、解析DTXMessage头等,并提供了相关开源项目参考。需要注意的是,电脑需安装相应驱动,且在macOS上可能需要权限设置。项目源码可在GitHub上找到。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文由YueChen发表于TesterHome社区网站,点击原文链接可与YueChen交流。

前言

获取 iOS 性能数据,一直都是比较麻烦的事情,之前在构建测试框架&平台的时候,获取 iOS 性能也是没有什么好的办法,也只能使用比较原始的方式,获取非越狱 iOS 性能数据,例如 xcode 调试可以获取,Instruments 获取数据,用起来也是极为不便。

到现在能做到跨平台,对非越狱 iOS 机器进行监控数据的貌似只有腾讯一家 PerfDog,确实非常优秀,但是腾讯对于 PerfDog 的技术还是比较保密的,GitHub 上比较有名的关于 iOS 设备控制仓库上例如 facebook idb,libimobiledevice 等,也都没有获取性能数据相关内容。

目前已经实现

使用纯 Python 代码跨平台(win,mac,linux) 获取 iOS 部分性能数据&其他数据,10.3 < iOS version < 14.2 虽然可以获取绝大部分 iOS 设备性能数据,当然也有部分设备没有兼容,也希望有兴趣的同学可以一起探讨共同开发。最终开源项目地址会在文章末尾开放

基本工作原理介绍

  • Usbmux
  • Lcokdown
  • LaunchDaemon
  • Instruments 通道
  • Framework
    • DeveloperDiskImage.dmg
    • MobileDevice.framework
  • DTXMessage 流
Usbmux

usbmuxd 的主要作用就是,通过 usb 来构建一条 socket 通道来实现 Mac OS 与 iOS 之间的通讯

windows 上则是 C:\Program Files\Common Files\Apple\Mobile Device Support\AppleMobileDeviceService.exe 驱动来监听 27105 端口与 iOS 之间进行通讯

想做相关工具开发,获取数据显然必不可少,下面监听 usbmuxd

### 转移 usbmuxd
sudo  mv /var/run/usbmuxd /var/run/usbmuxx
### 监听 usbmuxd 
sudo socat -t100 -x -v UNIX-LISTEN:/var/run/usbmuxd,mode=777,reuseaddr,fork UNIX-CONNECT:/var/run/usbmuxx 

### socat 工具是以文本来展示的,看起来相当费劲,
### 通过管道转到 wiershark 上面,wireshark 查看 usbmuxd 
sudo socat -d -d -lf /dev/stdout -x -v 2>&1   UNIX-LISTEN:/var/run/usbmuxd,mode=777,reuseaddr,fork UNIX-CONNECT:/var/run/usbmuxx | awk '/^[<>]/{a=0; $1 == "<" ? "I" : "0"; next}{$0 = substr($0, 1, 48);printf "%.4x %s\n",a,$0;a+=NF}' | text2pcap  - -  | wireshark  -ki -

### 很重要 !!!用完之后必须要复位,不然你的电脑之后就找不到手机了,必须重启电脑才行
sudo  mv /var/run/usbmuxx /var/run/usbmuxd

LaunchDaemon & Lcokdown

用于与设备配对并启动其他服务。
成功配对后才能访问其他服务。成功配对需要解锁设备,并且用户单击手机屏幕上的“信任此设备”。后面主要都是与 Lcokdown 服务进行交互通讯

主要交互方式通过 plist 格式文件进行交互来启动相关服务,这里咱们使用 python plistlib 来进行 byte 流转换

例如启动 com.apple

<think>好的,我现在需要帮用户推荐iOS应用性能测试的工具。根据用户提供的引用内容,先看看有哪些工具被提到了。引用[1]和[2]都提到了Instruments,这是Xcode自带的工具,功能强大,包括CPU、内存、网络等方面的测试,应该是苹果官方的首选工具。引用[4]提到SoloX,支持Android和iOS,无需越狱,可能是一个跨平台的工具,适合需要同时测试双端的用户。引用[5]提到了Time Profiler,这也是Instruments里面的一个功能,用来分析代码执行时间。引用[3]虽然提到了一款新的双端测试工具,但用户可能更关注iOS专用或更知名的工具。 接下来要考虑用户的真实需求。用户可能是一名开发者或测试人员,需要可靠且高效的工具来检测iOS应用的性能问题。他们可能需要详细的性能数据,比如CPU使用率、内存泄漏、网络性能等。Instruments作为官方工具,肯定是必须推荐的,因为它集成在Xcode里,功能全面。另外,第三方工具如SoloX可能提供更方便的实时数据收集和网页界面,适合不喜欢用Xcode或者需要更简洁操作的用户。 用户可能对工具的使用门槛有顾虑,比如是否需要越狱。引用[4]提到SoloX无需ROOT/越狱,这点很重要,因为很多用户可能无法越狱设备。另外,是否需要编程能力也是考虑因素,Instruments可能需要一定的学习成本,而第三方工具可能更易上手。 然后需要整理推荐的要点,分点说明每个工具的特点和适用场景。确保引用正确的来源,比如Instruments来自引用[1][2][5],SoloX来自引用[4]。还要注意用户提到的性能指标,如内存、CPU、网络等,确保工具覆盖这些方面。 最后,生成相关问题,帮助用户进一步了解工具的选择和使用,比如如何学习使用Instruments,或者如何集成到CI/CD流程中。这些问题需要自然且相关,符合用户可能的后续需求。</think>### iOS应用性能测试工具推荐 #### 1. **Xcode Instruments(苹果官方工具)** - **核心功能**:提供超过20种性能分析模块,包括: - **Time Profiler**:分析代码执行时间,定位性能瓶颈[^5] - **Allocations**:检测内存分配与泄漏 - **Network**:监控网络请求性能 - **Energy Log**:分析能耗指标 - **Core Animation**:检测图形渲染性能 - **优势**:深度集成开发环境,支持真机/模拟器测试,数据采样精度高[^1][^2] - **使用场景**:开发阶段性能调优、定位复杂内存问题 ```bash # 启动方式: Xcode -> Open Developer Tool -> Instruments ``` #### 2. **SoloX(第三方跨平台工具)** - **核心能力**: - 实时采集CPU/内存/FPS/网络流量数据 - 网页可视化界面 - 支持性能数据导出 - **突出特点**:无需越狱、即插即用,适合QA团队快速验证[^4] - **典型应用**:版本迭代基础性能验收、竞品对比测试 ```python # 安装示例: pip install solox ``` #### 3. **性能测试工具选型对照表** | 工具类型 | 数据精度 | 使用门槛 | 扩展能力 | 适用阶段 | |----------------|----------|----------|----------|----------------| | Xcode Instruments | 高 | 高 | 强 | 开发/深度调优 | | SoloX | 中 | 低 | 中 | 测试/快速验证 | #### 4. **进阶工具链** - **Firebase Performance Monitoring**:集成Crashlytics的云端性能监控 - **Appium+Python**:自动化性能测试框架搭建 - **Charles Proxy**:网络性能专项测试 [^1]: Instruments作为Xcode原生工具集,支持全面的性能指标采集 : 官方工具在CPU/内存分析方面具有最高可信度 [^4]: SoloX以其便捷性在第三方工具中表现突出 : Time Profiler是代码级优化的关键工具
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值