@Rozbo wrote:
本文原载于我的ios10 NSLog无效?,其他未授权转载请联系楼主。
去年起,我接触到ios10的越狱开发,但发现ios10的
NSLog
是失效了(曾一度以为是Tweak失效了,各种蛋疼的测试,发现原来是NSLog的原因)。
既然发现了这个问题,那就必须试图解决,以下是我解决的过程,发出来给大家警个醒,以免大家重复踩坑。
其实这个问题的原因是因为在ios10,苹果更改了日志系统,添加了几个os_函数,其中就有os_log
,具体可以在看这个链接尝试历史
syslogd to /var/log/syslog
之前旧的版本一直是使用这个,其实这个小插件很简单,仅仅是在
/etc/syslog.conf
里面加了一句*.* /var/log/syslog
来把所有的日志导出到/var/log/syslog这个文件里。
结果,ios10下无效。idevicesyslog
这个工具是我一直使用的,在mac上通过数据线链接手机后,能在mac的控制台输出ios的日志,它的优点是能够输出颜色,非常的实用的一个小工具,与它一起的套件都非常的好用,共有
name idevice_id idevicecrashreport idevicedebugserverproxy ideviceimagemounter idevicename ideviceprovision idevicebackup idevicedate idevicediagnostics ideviceinfo idevicenotificationproxy idevicescreenshot idevicebackup2 idevicedebug ideviceenterrecovery ideviceinstaller idevicepair idevicesyslog 各个功能看名字就知道了,这里不再细表,可以通过
brew install libimobiledevice
来安装。
结果实测,idevicesyslog在ios下,不能够输出的Tweak的NSLog
socat
这个工具用来干这个事。。。也大才小用了吧。这个工具功能非常强大,这里不再专门讲解了。
deviceconsole
一番尝试之下,发现这个问题没有那么简单,于是百度了一下,结果出来个更坑爹的货,让用
deviceconsole
,还指出了github repo,结果我clone下来,一番编译,提示ld: framework not found MobileDevice clang: error: linker command failed with exit code 1 (use -v to see invocation)
这个报错意为找不到
MobileDevice
这个库,但是我去看过了以后,它明明在哪。。。搞的我也是一脸懵逼。后来猜想这个原因可能是因为这个库是私有库,而xcode9
可能不让链接私有库了。。
于是我建了一个软连接,才重新编译通过。
编译通过之后,发现没有这个执行权限,然后一番捣鼓,结果发现!!!!根!本!没!卵!用!!!
关于这个项目的更多信息,请移步我clone的repo,我修改后pull request,结果十多天了没人理我。。ondeviceconsole
最后,再次抱着试试看的态度,准备试试ondeviceconsole,如果还是不行的话,就只能呵呵,重写NSLog到os_log了。但所幸,这个是可用的。。。
Posts: 7
Participants: 7