青春须早为,岂能长少年。这篇文章主要讲述Qt on Android:将Qt调试信息输出到logcat中相关的知识,希望能为你提供帮助。
版权全部 foruok 。如需转载敬请注明出处(http://blog.csdn.net/foruok)。
假设你在目标 android 设备上执行了 Qt on Android 应用,你可能希望看到程序输出的日志信息。 Android SDK 中有 adb 工具,当你连接了目标设备,能够使用 adb logcat 查看 Android 设备上应用输出的日志。
先介绍一下 adb 工具的使用。一般我经常使用下列命令:
- adb logcat ,查看手机或其它设备上输出的全部日志
- adb logcat -v time ,让日志带时间信息
- adb logcat -v time -s Tag 。仅仅显示指定标签的日志信息,同一时候显示日志时间。比方 adb logcat -v time -s qnote 。仅仅显示标签为 qnote 的日志信息;假设你想同一时候过滤多个标签,能够用英文半角逗号分隔标签。如 adb logcat -v time -s qnote,test 。
先看头文件 qDebug2Logcat.h :
#ifndef QDEBUG2LOGCAT_H #define QDEBUG2LOGCAT_H#ifdef ANDROID void installLogcatMessageHandler(const char *TAG); #else #define installLogcatMessageHandler(TAG) #endif#endif // QDEBUG2LOGCAT_H
非常easy,我声明了一个函数 installLogcatMessageHandler ,假设未定义 ANDROID 宏。它就是一个空宏,什么也不干;否则就安装一个消息过滤器。接管 Qt 输出的消息,转发到 Android 的日志系统中。
看源文件 qDebug2Logcat.cpp :
【Qt on Android(将Qt调试信息输出到logcat中)】
#if defined(ANDROID) #include "qDebug2Logcat.h" #include < android/log.h> #include < QDebug> #include < QByteArray> static const char *g_TAG = 0; static void messageOutput2Logcat(QtMsgType type, const QMessageLogContext & context, const QString & msg) { int prio = ANDROID_LOG_VERBOSE; QByteArray localMsg = msg.toLocal8Bit(); switch (type) { case QtDebugMsg: prio = ANDROID_LOG_DEBUG; break; case QtWarningMsg: prio = ANDROID_LOG_WARN; break; case QtCriticalMsg: prio = ANDROID_LOG_INFO; break; case QtFatalMsg: prio = ANDROID_LOG_FATAL; abort(); } __android_log_write(prio, g_TAG, localMsg.data()); }void installLogcatMessageHandler(const char *TAG) { g_TAG = (TAG == 0 ? "QDebug" : TAG); qInstallMessageHandler(messageOutput2Logcat); }#endif
实现也非常easy,调用 qInstallMessageHandler 把 messageOutput2Logcat 设置为 Qt 应用的默认消息处理器。 messageOutput2Logcat 函数则将 Qt 的调试消息级别映射到 Android 的日志级别上并调用 __android_log_write() 函数将日志信息写入 Android 日志系统。
你能够直接使用这两个文件,增加到你的项目中就可以。
然后在 main() 函数前包括 qDebug2Logcat.h 头文件,在 main() 函数体第一行增加以下的代码:
installLogcatMessageHandler("yourLogTag");
好了,一切就绪了。
版权全部 foruok 。如需转载敬请注明出处(http://blog.csdn.net/foruok)。
我翻译的大神 BogDan Vatra 的 Qt on Android 系列文章:
- Qt on Android Episode 1(翻译)
- Qt on Android Episode 2(翻译)
- Qt on Android Episode 3(翻译)
- Qt on Android Episode 4(翻译)
我的关于 Qt on Android 的系列文章:
- Windows下Qt 5.2 for Android开发入门
- Qt for Android 部署流程分析
- Qt for Android 编译纯Cproject
- Windows下Qt for Android 编译安卓C语言可执行程序
- Qt on Android:图文具体解释Hello World全过程
推荐阅读
- Android开发笔记——View
- 开源 java CMS - FreeCMS2.3 移动app生成栏目数据
- Learning English From Android Source Code:1
- Android Http POST文件上传之-----RFC1867协议
- 工作小脚本--通过插件向服务器上传APP
- Android深入四大组件Service的绑定过程
- android MPChart图标使用具体解释
- Android与H5互调
- Android 网络图片Url 转 Bitmap