接着[libimobiledevice 优化] iOS Crash 日志获取工具 idevicecrashreport 功能优化 聊
既然 idevicecrashreport 添加了过滤的功能,尝试着 idevicesyslog 也添加过滤的功能。
idevicesyslog | grep TuNiuApp
这条语句不能通过 java 的 Runtime.getRuntime().exec 直接执行,因为有管道符,但是 idevicesyslog 不是 shell 脚本,也不能当成参数执行。
需要获取全部日志,逐行分析。
Process p;
p = Runtime.getRuntime().exec("/usr/local/bin/idevicesyslog -u "+UDID);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null) {
if(line.contains("XXX")){
代码......
}
}
所以想办法,直接给 idevicesyslog 加过滤参数,使其输出过滤后的日志数据。
这个脚本比 idevicecrashreport 脚本修改难度大一些,还是因为不熟悉 c 语言。
改完之后的帮助命令
MAC$ idevicesyslog -h
Usage: idevicesyslog [OPTIONS]
Relay syslog of a connected device.
-d, --debug enable communication debugging
-u, --udid UDID target specific device by its 40-digit device UDID
-g, --grep grep string line by line
-h, --help prints usage information
Homepage: <http://libimobiledevice.org>
MACdeMacBook-Pro:ios-minicap-master MAC$
效果如下,直接输出过滤后的日志,这样通过 java 调用就方便多了。
MAC$ idevicesyslog -g TuNiuApp
[connected]
Mar 22 16:55:27 Bzd TuNiuApp(AppleJPEG)[3087] <Notice>: [0x10540c200] Created session
Mar 22 16:55:27 Bzd TuNiuApp(AppleJPEG)[3087] <Notice>: [0x105407c00] Created session
Mar 22 16:55:27 Bzd TuNiuApp(AppleJPEG)[3087] <Notice>: [0x105407c00] Releasing session
地址:https://github.com/baozhida/libimobiledevice
修改的文件 :https://github.com/baozhida/libimobiledevice/blob/master/tools/idevicesyslog.c
直接下载然后自己编译