因為工作需要,要在mac上看iOS真機的日志羡玛。本來直接用控制臺就可以看了,但是因為需要看的日志單條過長,在控制臺里面居然被截斷省略了,于是搜了下,開始折騰用idevicesyslog看。
用idevicesyslog看日志很簡單,直接敲idevicesyslog命令就可以了,如果需要過濾,用grep和sed配合用就ok
$ idevicesyslog
$ idevicesyslog |grep keyword
之前裝appium時已經(jīng)裝過libimobiledevice了(brew install libimobiledevice 前提是安裝了homebrew),直接就連上了我的設(shè)備(iphone6, iOS11)宗苍。
沒想到遇到了以下報錯:
ERROR: Could not start service com.apple.syslog_relay.
Could not start logger for udid xxxxxxx
只好去google,發(fā)現(xiàn)git里面已經(jīng)反饋過不少這個問題了??????
[SOLVED] Unable to start syslog with iOS 10 on Windows #325
ERROR: Could not connect to lockdownd, error code -8 #226
iOS 11 ideviceinstaller, ideviceinfo not working #510
同時也搜了下國內(nèi)的博主,發(fā)現(xiàn)不少人都建議更新libimobiiledevice和chmod 777 /var/db/lockdown
本著我一直以來的偷懶原則,既然可能是chmod 777能解決,就sudo idevicesyslog試試,又試了chmod 777 后在idevicesyslog結(jié)果都還是報錯,看來偷懶不行了,只能認(rèn)真看下git里的問題討論??
里面nikias的回復(fù)大部分都是在說用最新版本的libimobiledevice和usbmuxd試試能不能work,可能是libimobiledevice或usbmuxd 或2者都不是最新導(dǎo)致的問題
本著偷懶原則??,我就直接brew upgrade libimobiledevice下了,哦豁,不行,我的libimobiledevice在brew上已經(jīng)是最新版本了稼稿。行吧,繼續(xù)扒貼挖墳看看,到底要怎么改,最后在issue510看到了問題解決過程,貌似是從iOS11開始,設(shè)備開始不支持ValidatePair request,而idevicesyslog在獲取設(shè)備信息之類的過程中會用到這個request,從而導(dǎo)致iOS lockdownd返回錯誤,程序退出?(具體哪個過程、pair讳窟、lockdown是什么沒看懂,趕時間就不挖墳了)让歼。blablabla經(jīng)過熱情網(wǎng)友的一頓討論和驗證后,nikias修復(fù)了這個問題,并在網(wǎng)友們的建議下,在2017.813提交了一個他本人覺得還不夠完美的解決方案(5a85432)到master。
好吧,那就是要更新libimobiledevice到最新版了,但是因為我是半個小白,雖然知道了要更新到libimobiledevice到最新版,但是不知道怎么更新到最新,畢竟brew上已經(jīng)是head版本了啊(1.2.0 HEAD, 安裝目錄版本號也是1.2.0)丽啡。而且我不想手動拉代碼到本地來make什么的一系列操作,可能會導(dǎo)致一些軟件在brew可以管理,一些又要我手動管理,強迫癥表示難受谋右。
$ brew info libimobiledevice
libimobiledevice: stable 1.2.0 (bottled), HEAD
Library to communicate with iOS devices natively
https://www.libimobiledevice.org/
/usr/local/Cellar/libimobiledevice/1.2.0_3 (66 files, 1MB) *
行吧,繼續(xù)挖墳窺屏熱心網(wǎng)友們的討論,得出
brew uninstall libimobiledevice #卸載已安裝的
brew install -v --HEAD --fresh --build-from-source libimobiledevice #用brew從git拉下來最新代碼并build
這樣就能更新了,于是執(zhí)行,又在install的時候遇到報錯
Error: libimobiledevice HEAD-eea4f1b did not build
……
READ THIS: https://docs.brew.sh/Troubleshooting
怎么肥四?我一開始沒有注意看編譯過程的輸出,以為是網(wǎng)絡(luò)之類的原因,直到出錯2次,老實回頭看編譯日志了……行吧,難怪評論里都說要更新usbmuxd,還是老實點吧??。
好的,老老實實卸載usbmuxd,libimobiledevice,然后安裝最新版本,因為usbmuxd 1.0.10在brew里也是HEAD version了,也需要build-from-source补箍。于是最終命令如下,問題解決,不需要chmod,終于能看到日志了:
brew uninstall libimobiledevice usbmuxd
brew install -v --HEAD --build-from-source usbmuxd libimobiledevice
這里注意,有些帖子和文章里install的時候帶了個--fresh命令,但是我這里用--fresh時brew會報錯,并不支持這個命令,去掉就好了改执。
libimobiledevice要求usbmuxd版本1.1.0的問題,其實在brew直接安裝時,沒有這個要求,usbmuxd 1.0.10版本也可以,原因是有人在brew上反饋了這個問題,brew里把usbmuxd的版本要求改到了1.0.10(issue#34601)啸蜜。但是如果是用--build-from-source來安裝libimobiledevice, libimobiledevice 的git代碼里對usbmuxd的版本要求還是1.1.0以上,所以只能把usbmuxd一起更新。
這里對brew規(guī)則也有了點了解:
1.安裝版本查看:如果是直接從brew bottle里安裝,當(dāng)前安裝的版本名稱,安裝目錄就以版本名稱命名,如/usr/local/Cellar/libimobiledevice/1.2.0_3 ,如果是build-from-source,安裝目錄就以commitid來命名,如/usr/local/Cellar/libimobiledevice/HEAD-eea4f1b_3
沒有弄明白的問題:
1.pair, lockdown, validate pair這些是什么定義和過程,為什么從設(shè)備讀取日志會涉及到這些?從設(shè)備讀取日志具體流程是什么?
2.brew的使用,build-from-source的時候,貌似還可以自定義很多參數(shù),包括更改依賴軟件和軟件限定版本辈挂。
遇到的問題:
1.iOS11下總是有日志被截斷衬横,懷疑是buffer之類的不夠大原因,iOS9下截斷現(xiàn)象較少终蒂,但也有