版权全部 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. 图书大甩卖(操作系统、C语言、Linux) 已成交
  2. 对《构建之法》的一点认识
  3. bin/...的访问被拒绝被拒绝的问题
  4. Linux之部署虚拟环境、安装系统
  5. 【C++】如何提高Cache的命中率,示例
  6. 从C语言到C++成长经历所得的一些技巧和感悟
  7. 开源Java反编译工具
  8. 当时间管理碰上大数据,从此,悠悠时光也终不再那么漫长
  9. 开发利器之IntelliJ IDEA学习笔记
  10. webpack的五个核心概念---webpack工作笔记002
  11. 64位 eclipse完美安装svn插件
  12. 设计模式——策略模式详解
  13. 【人脸识别】基于matlab GUI PCA人脸二维码识别(带面板)【含Matlab源码 754期】
  14. 聊一聊自来水营业收费系统
  15. 1983年图灵奖--肯尼斯·汤普森和丹尼斯·里奇简介
  16. AI一分钟 | 大福利!谷歌2018年将公开内部机器学习培训课程;医疗影像领域今年最大融资出炉!图玛深维获软银中国2亿人民币投资
  17. 右键文件或文件夹或空白处弹出菜单包含自己软件快捷方式
  18. 系统日志中敏感字段掩码处理
  19. Go语言WEB框架:请求参数处理
  20. 大数据入门的4个必备常识

热门文章

  1. 一分钟安装IDA pro7.0
  2. SOAP HTTP绑定
  3. 河北计算机科学与技术研究生,2021年河北工业大学计算机科学与技术(081200)硕士研究生招生信息_考研招生计划和招生人数 - 学途吧...
  4. split | notes in java
  5. 数据库BCP命令导入导出数据
  6. 美团笔试1--螺旋矩阵
  7. 四、MyBatis-映射文件
  8. 关于笔记本安装parrot和kali的一些问题(花屏,息屏,屏幕不能休眠)
  9. [Mysql]查看版本号的五种方式
  10. 如何去除本地文件与svn服务器的关联