使用libimobiledevice通过WiFi查看iOS真机的console log

我们知道,要看iOS设备的控制台日志,可以通过XCode-Window-Devices,然后点击小三角符号查看,但这有点麻烦有没有?
好在后来我知道了这个小软件:fir.im出品的Log Guru,用起来还算不错。

不过上面两个都需要插着数据线才行,终归还是有点烦躁的。今天偶然间发现了libimobiledevice这么个好东西,居然可以通过WiFi远程直接看日志!简直牛逼大发!

首先通过homebrew安装libimobiledevice:

brew update
brew install --HEAD libimobiledevice
brew install --HEAD ideviceinstaller

libimobiledevice其实包含了一大坨有用的工具,装完后可以敲idevice,再按两下Tab查看。这里提到的查看控制台日志的工具叫做idevicesyslog,只是那一大坨中的一个而已,其他好玩的请自行发掘。另外要注意,还有个ideviceinstaller不属于libimobiledevice套件,需要单独安装,我上面的命令中顺带着把它也安装了。这货是用来管理真机上的app的,安装/升级/卸载……无所不能。

好了,回归真题。使用idevicesyslog有些前提条件必须准备好。首先你的iOS设备必须跟当前主机配对过,对,就是第一次插上数据线后手机上提示是否信任电脑的那个提示框,你点击了信任,就算配对成功。配对功能对应于libimobiledevice套件中的idevicepair命令,具体使用方法可以通过idevicepair --help查看。

其次,你的iOS设备如果处于锁屏状态,那idevicesyslog也是无法工作的,这条其实适用于所有idevice*命令。

配对过的iOS设备通过数据线连接到电脑后,执行idevice_id -l,便会列出设备的udid,idevice*系列命令都需要通过-u udid参数来指定操作哪台设备,但如果只有一台设备可用时,就可以忽略-u参数。

好了,有了以上认识,直接执行idevicesyslog来查看通过数据线连接的iOS设备的控制台日志吧。

接下来自然是本文的重点——不插数据线,而是通过WiFi,必须启用iTunes中的WiFi Sync(无线同步)功能。我们知道,iTunes WiFi Sync工作时,需要手机插着充电,但这里根本无需这个限制。按本屌的理解,启用这个功能并不是真正要用这个功能,而只是借用它来使手机启用跟主机进行无线通讯的某个进程而已。一旦WiFi Sync启用后,libimobiledevice套件就能发现跟当前主机处于同一局域网中,并且配对过的iOS设备。试试idevice_id -l便知,是不是不插数据线也能列出你的udid来了?当然,如果此时还同时连着数据线,那同样的udid会出现两次。貌似这是一个feature,而非bug。

只要idevice_id -l能通过WiFi发现你的设备,那idevicesyslog自然也能工作了。

最后唠一下idevicedebug和上面提到的ideviceinstaller,这两个(至少是这两个)命令不能通过WiFi工作,必须通过数据线。
idevicedebug run 'APP_BUNDLE_ID'可以直接launch某个app,当然,这个app必须是你通过development证书build到手机上的才行。
ideviceinstaller -l则可以列出手机上所有的用户安装的app,关于ideviceinstaller的其他强大功能,这里就不提了,有兴趣的朋友自己去研究吧。

使用libimobiledevice通过WiFi查看iOS真机的console log》有7个想法

    1. 试了一下,brew里的版本一直是1.2.0,旧了

      brew uninstall ideviceinstaller
      brew uninstall libimobiledevice
      brew install --HEAD libimobiledevice
      brew install --HEAD ideviceinstaller
      

      macOS 10.12.3亲测通过

发表评论

电子邮件地址不会被公开。 必填项已用*标注