从命令行读取 ios 设备上 Apps 的 qDebug 输出

Reading qDebug output of Apps on ios devices from command line

我目前正在 运行ning iOS 设备上进行 Qt 应用程序的自动化测试。到目前为止,我能够很好地安装和 运行 这些应用程序,但我无法读取它们的输出。据我了解,阅读 this 问题,Qt 使用 gdb 服务器 std::outstd::err 的输出传递给 Qt Creator 但是我不知道如何使用这些信息。除了包标识符,我只得到了应用程序的 .ipa 文件。我可以访问应用程序代码,但不能更改它。

我使用 libmobiledevice libraries 来处理设备上的连接、安装和执行等所有任务。

总结:我想读取控制台上显示的 Qt 编写的应用程序的调试输出,就像在 "Application output" window 我的创造者。

我找到了使用 imobiledevice 库的方法。通过调用 Idevicedebug -u <uuid> run de.foo.app 我能够执行该应用程序。 qDebug 输出被提示为 std::out.

由于应用程序在锁定屏幕启动时崩溃,我不得不首先检查 idevicediagnostics ioreg IOPower 的输出来检查显示器是否空闲。

现在,半年后,我找到了一个既优雅又稳定的解决方案。

我使用节点安装了 ios-deploy 工具:

npm install -g ios-deploy

使用这个,我能够安装应用程序并通过以下方式收听它的输出:

ios-deploy --debug --bundle path/to/my.app

我收到了完整的 qDebugstd::outstd::err 输出。

要卸载应用程序,我只是添加了 -9--uninstall_only 选项:

ios-deploy --debug --bundle path/to/my.app --uninstall_only

使用此解决方案,应用程序可以可靠地启动,而不会因锁定屏幕而崩溃