开发者社区> 问答> 正文

如何在iOS 真机和模拟器上实现自动化性能分析?

已解决

如何在iOS 真机和模拟器上实现自动化性能分析?

展开
收起
胡嘞嘞 2022-07-06 18:01:42 929 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    苹果有个usbmux 协议会给自己macOS 程序和设备进行通信,场景有备份iPhone 还有真机调试。macOS 对应的是/System/Library/PrivateFrameworks/MobileDevice.framework/ Versions/A/Resources/ 下的usbmuxd 程序,usbmuxd 是IPC socket 和TCP socket 用来进行进程间通信,这里有他的一个开源实现。对于在手机端是lockdown 来起服务。因此利用usbmuxd 的协议,就可以自建和设备通信的应用比如lookin,实现方式可以参考这个demo 。使用usbmux 协议的libimobiledevice(相当于Android 的adb)提供了更多能力,可以获取设备的信息、搭载ifuse 访问设备文件系统(没越狱可访问照片媒体、沙盒、日志)、与调试服务器连接远程调试。无侵入的库还有gamebench 也用到了libimobiledevice。

    instruments 可以导出.trace 文件,以前只能用instruments 打开,Xcode12 提供了xctrace 命令行工具可以导出可分析的数据。Xcode12 之前的时候是能使用TraceUtility 这个库,TraceUtility 的做法是链上Xcode 里instruments 用的那些库,比如DVTFoundation 和InstrumentsKit 等,调用对应的方法去获取.trace 文件。使用libimobiledevice 能构造操作instruments 的应用,将instruments 的能力自动化。 perfdog 就是使用了libimobiledevice 调用了instruments 的接口,实现代码来实现instruments 的一些功能,并进行了扩展定制,无侵入的构建本地性能监控并集成到自动测试中出数据,减少人工成本。无侵入的另一个好处就是可以方便用同一套标准看到其他APP 的表现情况。

    要到具体场景去跑case 还需要流程自动化。APPium 使用的是Facebook 开发的一套基于W3C 标准交互协议WebDriver 的库WebDriverAgent,Python 版可以看这个,不过后来Facebook 开发了新的一套命令行工具idb(iOS Development Bridge),归档了WebDriverAgent。

    idb 可以对iOS 模拟器和设备跑自动化测试,idb 主要有两个基于macOS 系统库CoreSimulator.framework、MobileDevice.framework,包装的FBSimulatorControl 和FBDeviceControl 库。 FBSimulatorControl 包含了iOS 模拟器的所有功能,Xcode 和simctl 都是用的CoreSimulator,自动化中输入事件是逆向了iOS 模拟器Indigo 服务的协议,Indigo 是模拟器通过machIPC 通道mach_msg_send 接受触摸等输入事件的协议。破解后就可以模拟输入事件了。

    MobileDevice.framework 也是macOS 的私有库,macOS 上的Finder、Xcode、Photos 这些会使用iOS 设备的应用都是用了MobileDevice,文件读写用的是包装了AMDServiceConnection协议的AFC 文件操作API,idb 的instruments 相关功能是在这里实现了DTXConnectionServices 服务协议。

    libmobiledevice 可以看作是重新实现了MobileDevice.framework。pymobiledevice、MobileDevice、C 编写的SDMMobileDevice , 还有Objective-C 编写的MobileDeviceAccess,这些库也是用的MobileDevice.framework。

    以上内容摘自《高德技术2020年刊合集》电子书,点击https://developer.aliyun.com/topic/download?id=1135可下载完成版

    2022-07-06 18:15:05
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
阿里云开发者社区官方技术圈,用户产品功能发布、用户反馈收集等。
问答排行榜
最热
最新

相关电子书

更多
手淘iOS性能优化探索 立即下载
From Java/Android to Swift iOS 立即下载
深入剖析iOS性能优化 立即下载