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),这是很好的.它们是专门针对这种情况开发的 ...
最新文章
- B. Om Nom and Dark Park
- (转)如何选择合适的射频模块
- Java实验二猜数字游戏,JAVA-第2周实验-猜数字游戏
- postgreSQL源码分析——索引的建立与使用——Hash索引(1)
- c语言实验题水仙花数5359,《C语言程序设计》实验报告(实验1-12).doc
- py3Fdfs 修复几个bug
- js继承,es3,es6的实现继承
- [024] 欢迎大家关注我的微信公众帐号小q机器人(xiaoqrobot)
- EMMC和Nand傻傻分不清
- 【Selenium】控制当前已经打开的 chrome浏览器窗口
- 背负着24-70之名 佳能新老镜皇横向对比(MTF对比说明)
- 合并的表格怎么加横线_word怎么合并表格边框
- android wp8相机,Camera360 for WP8推出“时光相机” 让你重温岁月痕迹
- 男人在神永恒国度里的沉思录
- 修复Win7服务列表中没有Windows Update服务的问题
- C#混音同时录制采集声卡和麦克风话筒
- android 卷轴动画,原来这种画卷展开的效果这么简单!三步即可做出来!太惊艳了...
- P2614 计算器弹琴
- 【旅游】【转载】户外运动品牌网站介绍!
- 电网运行信息检索系统的设计与实现
热门文章
- python函数参数列表中的*与**
- python干啥用_用python内置函数能干些什么?
- java弱引用(WeakReference)和SoftReference的区别以及在android内存处理的作用
- Spring事务TransactionProxyFactoryBean属性-transactionAttributes的意义
- java中获取文件路径的几种方式
- ionic angularJS input 相关指令 以及定时器 的使用
- FXK Javascript
- TP5 上传文件 中文乱码问题
- 客户端页面不更新CSS样式或JS脚本的方法 (2018-08-17 17:33)
- 【转】Nginx反向代理和负载均衡