将Qt日志输出到安卓日志系统里


将Qt日志输出到安卓日志系统里

因为在学习qt on android,所以想把Qt日志输出到安卓日志系统里,方便程序调试

源代码: 这里

1.创建辅助函数,头文件,源文件见截图

0_1522552981119_TIM截图20180401112237.png

0_1522553456300_222.png

在头文件,我们判断,如果定义了宏ANDROID,我们就安装一个消息过滤器,接管qt输出的消息,转发到Android的日志系统中,如果没定义宏ANDROID,就是一个空宏,什么也不干
在源文件里,我们安装自己的消息过滤器
在消息过滤器里将qt log类型转换为androi log类型
最后调用__android_log_write函数将日志信息写入Android日志系统

PS: 一开始,我没有 这个头文件,后来从NDK里搜出来了,我的路径【C:\Qt\android-ndk-r10e\platforms\android-12\arch-mips\usr\include\android\log.h】,拷贝到工程下,就解决了。真机智如我:smiling_face_with_sunglasses:

2.main文件中调用installLogcatMessageHandler,安装消息过滤器,参数是自定义tag

0_1522553586364_222.png

3.编译运行,在手机端测试,原谅我的button鬼畜:hugging_face:

0_1522554295881_TIM图片20180401114313.jpg

4.qt 控制台输出

0_1522554736156_TIM截图20180401115102.png

5.总结,qt原生log与android 日志类对应关系,一一对应

qt android
QtDebugMsgTest ANDROID_LOG_DEBUG
QtWarningMsgTest ANDROID_LOG_WARN
QtCriticalMsgTest ANDROID_LOG_ERROR
QtInfoMsgTest ANDROID_LOG_INFO
QtFatalMsgTest ANDROID_LOG_FATAL

6.汇总

qml qt android
debug,log QtDebugMsg ANDROID_LOG_DEBUG
warn QtWarningMsg ANDROID_LOG_WARN
error QtCriticalMsg ANDROID_LOG_ERROR
info QtInfoMsg ANDROID_LOG_INFO
? QtFatalMsg ANDROID_LOG_FATAL

PS: 我发现这个ANDROID宏是自动的,构建平台不同,自动识别,好智能有木有

0_1522555940035_TIM截图20180401121049.png

0_1522556023753_TIM截图20180401121328.png