版权全部 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 。

为了把日志导入 Android 系统的日志系统(一个环形内存日志系统)。我写了一个辅助函数,方便大家使用。

先看头文件 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 :

#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全过程

Qt on Android:将Qt调试信息输出到logcat中相关推荐

  1. 将Linux脚本中的正常输出,警告,错误等信息输出到文件中

    将Linux脚本中的正常输出,警告,错误等信息输出到文件中 转载于:https://www.cnblogs.com/lwmp/p/7700339.html

  2. 将Linux下编译的warning警告信息输出到文件中

    Linux中,脚本语言环境中,即你用make xxx即其他一些普通 linux 命令,比如ls,find等,不同的数字,代表不同的含义:  数字 含义 标准叫法 0 标准输入 stdin = stan ...

  3. qt on android qml,Qt on Android: Qt Quick 之 Hello World 图文详解

    在上一篇文章,<Qt on Android:QML 语言基础>中,我们介绍了 QML 语言的语法,在最后我们遗留了一些问题没有展开,这篇呢,我们就正式开始撰写 Qt Quick 程序,而那 ...

  4. VC调试信息输出 TRACE宏

    TRACE宏对于VC下程序调试来说是很有用的东西,有着类似printf的功能:该宏仅仅在程序的DEBUG版本中出现,当RELEASE的时候该宏就完全消失了,从而帮助你调试也在RELEASE的时候减少代 ...

  5. wince 串口调试信息输出

    不管在WinCE5.0还是在WinCE6.0中,我们在调试驱动或者应用的时候都会用到打印函数.在驱动里面,我们可能会用DEBUGMSG(..),RETAILMSG(..),还有NKDbgPrintfW ...

  6. OutputDebugString调试字符串输出及Delphi中调用显示最大字符长度限制为1024

    OutputDebugString 是很常用的调试函数, 其作用是将指定的调试字符串, 在运行时输出到特定的位置, 以便我们能获知程序执行的情况. 其 MSDN: http://msdn.micros ...

  7. qt在GUI显示时,将调试信息输出到控制台的设置

    1. 在.pro文件中添加一下设置: CONFIG += console 2. 项目的[构建和运行]中,需要勾选[Run in terminal]: 转载于:https://www.cnblogs.c ...

  8. qt 关联android,从QT app(com.android.settings)打开android设置

    QAndroidJniObject可以从Qt C代码创建JNI对象. 例如:获取活动: QAndroidJniObject activity = QAndroidJniObject::callStat ...

  9. qt打开android相机,Qt QML相机到C QImage在Android上

    1)是的,这是可能的.我有两种方法来做到这一点. 使用QAbstractVideoFilter与QVideoFilterRunnable类(仅限QT 5.5),这是很好的.它们是专门针对这种情况开发的 ...

最新文章

  1. B. Om Nom and Dark Park
  2. (转)如何选择合适的射频模块
  3. Java实验二猜数字游戏,JAVA-第2周实验-猜数字游戏
  4. postgreSQL源码分析——索引的建立与使用——Hash索引(1)
  5. c语言实验题水仙花数5359,《C语言程序设计》实验报告(实验1-12).doc
  6. py3Fdfs 修复几个bug
  7. js继承,es3,es6的实现继承
  8. [024] 欢迎大家关注我的微信公众帐号小q机器人(xiaoqrobot)
  9. EMMC和Nand傻傻分不清
  10. 【Selenium】控制当前已经打开的 chrome浏览器窗口
  11. 背负着24-70之名 佳能新老镜皇横向对比(MTF对比说明)
  12. 合并的表格怎么加横线_word怎么合并表格边框
  13. android wp8相机,Camera360 for WP8推出“时光相机” 让你重温岁月痕迹
  14. 男人在神永恒国度里的沉思录
  15. 修复Win7服务列表中没有Windows Update服务的问题
  16. C#混音同时录制采集声卡和麦克风话筒
  17. android 卷轴动画,原来这种画卷展开的效果这么简单!三步即可做出来!太惊艳了...
  18. P2614 计算器弹琴
  19. 【旅游】【转载】户外运动品牌网站介绍!
  20. 电网运行信息检索系统的设计与实现

热门文章

  1. python函数参数列表中的*与**
  2. python干啥用_用python内置函数能干些什么?
  3. java弱引用(WeakReference)和SoftReference的区别以及在android内存处理的作用
  4. Spring事务TransactionProxyFactoryBean属性-transactionAttributes的意义
  5. java中获取文件路径的几种方式
  6. ionic angularJS input 相关指令 以及定时器 的使用
  7. FXK Javascript
  8. TP5 上传文件 中文乱码问题
  9. 客户端页面不更新CSS样式或JS脚本的方法 (2018-08-17 17:33)
  10. 【转】Nginx反向代理和负载均衡