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 。
为了把日志导入 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中相关推荐
- 将Linux脚本中的正常输出,警告,错误等信息输出到文件中
将Linux脚本中的正常输出,警告,错误等信息输出到文件中 转载于:https://www.cnblogs.com/lwmp/p/7700339.html
- 将Linux下编译的warning警告信息输出到文件中
Linux中,脚本语言环境中,即你用make xxx即其他一些普通 linux 命令,比如ls,find等,不同的数字,代表不同的含义: 数字 含义 标准叫法 0 标准输入 stdin = stan ...
- qt on android qml,Qt on Android: Qt Quick 之 Hello World 图文详解
在上一篇文章,<Qt on Android:QML 语言基础>中,我们介绍了 QML 语言的语法,在最后我们遗留了一些问题没有展开,这篇呢,我们就正式开始撰写 Qt Quick 程序,而那 ...
- VC调试信息输出 TRACE宏
TRACE宏对于VC下程序调试来说是很有用的东西,有着类似printf的功能:该宏仅仅在程序的DEBUG版本中出现,当RELEASE的时候该宏就完全消失了,从而帮助你调试也在RELEASE的时候减少代 ...
- wince 串口调试信息输出
不管在WinCE5.0还是在WinCE6.0中,我们在调试驱动或者应用的时候都会用到打印函数.在驱动里面,我们可能会用DEBUGMSG(..),RETAILMSG(..),还有NKDbgPrintfW ...
- OutputDebugString调试字符串输出及Delphi中调用显示最大字符长度限制为1024
OutputDebugString 是很常用的调试函数, 其作用是将指定的调试字符串, 在运行时输出到特定的位置, 以便我们能获知程序执行的情况. 其 MSDN: http://msdn.micros ...
- qt在GUI显示时,将调试信息输出到控制台的设置
1. 在.pro文件中添加一下设置: CONFIG += console 2. 项目的[构建和运行]中,需要勾选[Run in terminal]: 转载于:https://www.cnblogs.c ...
- qt 关联android,从QT app(com.android.settings)打开android设置
QAndroidJniObject可以从Qt C代码创建JNI对象. 例如:获取活动: QAndroidJniObject activity = QAndroidJniObject::callStat ...
- qt打开android相机,Qt QML相机到C QImage在Android上
1)是的,这是可能的.我有两种方法来做到这一点. 使用QAbstractVideoFilter与QVideoFilterRunnable类(仅限QT 5.5),这是很好的.它们是专门针对这种情况开发的 ...
最新文章
- 图书大甩卖(操作系统、C语言、Linux) 已成交
- 对《构建之法》的一点认识
- bin/...的访问被拒绝被拒绝的问题
- Linux之部署虚拟环境、安装系统
- 【C++】如何提高Cache的命中率,示例
- 从C语言到C++成长经历所得的一些技巧和感悟
- 开源Java反编译工具
- 当时间管理碰上大数据,从此,悠悠时光也终不再那么漫长
- 开发利器之IntelliJ IDEA学习笔记
- webpack的五个核心概念---webpack工作笔记002
- 64位 eclipse完美安装svn插件
- 设计模式——策略模式详解
- 【人脸识别】基于matlab GUI PCA人脸二维码识别(带面板)【含Matlab源码 754期】
- 聊一聊自来水营业收费系统
- 1983年图灵奖--肯尼斯·汤普森和丹尼斯·里奇简介
- AI一分钟 | 大福利!谷歌2018年将公开内部机器学习培训课程;医疗影像领域今年最大融资出炉!图玛深维获软银中国2亿人民币投资
- 右键文件或文件夹或空白处弹出菜单包含自己软件快捷方式
- 系统日志中敏感字段掩码处理
- Go语言WEB框架:请求参数处理
- 大数据入门的4个必备常识
热门文章
- 一分钟安装IDA pro7.0
- SOAP HTTP绑定
- 河北计算机科学与技术研究生,2021年河北工业大学计算机科学与技术(081200)硕士研究生招生信息_考研招生计划和招生人数 - 学途吧...
- split | notes in java
- 数据库BCP命令导入导出数据
- 美团笔试1--螺旋矩阵
- 四、MyBatis-映射文件
- 关于笔记本安装parrot和kali的一些问题(花屏,息屏,屏幕不能休眠)
- [Mysql]查看版本号的五种方式
- 如何去除本地文件与svn服务器的关联