Android 5 - 将stdout重定向到logcat

时间:2014-10-23 18:53:41

标签: android stdout logcat googletest android-5.0-lollipop

我正在尝试在Android上运行一些GMock / GTest测试。这些都运行良好,但没有输出,因为GMock记录到stdout。

我尝试了以下但没有运气(可能是因为它适用于Dalvik VM,而且他们已经废除了Android 5中的内容):

$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start

log.redirect-stdio设置为true时,stdio仍然没有输出到logcat。

我还尝试使用streambuf自定义多个std::cout.rdbuf实现,尝试使用__android_log_print将stdout指向logcat,但这些都没有向logcat打印任何内容。

有没有人成功设法将stdout重定向到Android 5中的logcat?

如果需要,我可以添加更多详细信息(例如我尝试的streambuf实现)。

2 个答案:

答案 0 :(得分:0)

这对于将stdout重定向到logcat的问题并不是一个真正的解决方案,但我建议将其作为一种解决方法,以防有人帮助。

您可以将stdout重定向到文件:

freopen("/data/data/com.your.package/files/out.txt", "w", stdout);
... // Call GMock which prints to the file instead
fclose(stdout)

然后我们可以cat该文件来查看记录的测试结果。可悲的是,Android没有tail,所以日志记录并非实时可用。 (除非你擅长垃圾邮件cat

答案 1 :(得分:0)

使用旧的Java方法进行操作(但我使用的是Kotlin,有人可以建议使用更干净的版本吗?)

documentation: System.setOut()

type into