Qt on Android:将Qt调试信息输出到logcat中
2014-05-08 08:43
429 查看
版权所有 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 :
很简单,我声明了一个函数 installLogcatMessageHandler ,如果没有定义 ANDROID 宏,它就是一个空宏,什么也不干;否则就安装一个消息过滤器,接管 Qt 输出的消息,转发到 Android 的日志系统中。
看源文件 qDebug2Logcat.cpp :
实现也很简单,调用 qInstallMessageHandler 把 messageOutput2Logcat 设置为 Qt 应用的默认消息处理器。 messageOutput2Logcat 函数则将 Qt 的调试消息级别映射到 Android 的日志级别上并调用 __android_log_write() 函数将日志信息写入 Android 日志系统。
你可以直接使用这两个文件,加入到你的项目中即可。然后在 main() 函数前包含 qDebug2Logcat.h 头文件,在 main() 函数体第一行加入下面的代码:
好了,一切就绪了。
版权所有 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 编译纯C工程
Windows下Qt for Android 编译安卓C语言可执行程序
Qt on Android:图文详解Hello World全过程
如果你在目标 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
很简单,我声明了一个函数 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
实现也很简单,调用 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 编译纯C工程
Windows下Qt for Android 编译安卓C语言可执行程序
Qt on Android:图文详解Hello World全过程
相关文章推荐
- [转载]Android 生成keystore,两种方式
- Afaria Android客户端使用afariaseed.xml文件进行注册
- 【Android开发日记】 使得ScrollView显示区域位于某一个layout下面,不全屏显示,不覆盖上方的layout
- 【Android开发日记】 AndroidCharts LineView根据数据自动调整高度
- Android开源项目分类汇总
- 【Android】自定义控件——仿天猫Indicator
- android layouts
- Android 常用开源控件收集
- android shape(如自定义Button)
- Android 读取手机联系人、拨号、发送短信及长按菜单的操作
- 【Android】安装时, 先拷so主目录(当前设备相关),再拷so次目录,不重复拷贝 (armeabi/armeabi-v7a) arm-v7不兼容arm-v5
- Android--Sensor传感器
- Android学习笔记(十八)ContentProvider和Uri详解
- 一个html5播放视频的video控件只支持android的默认格式mp4和3gp
- android bootanimation.zip
- android cpp 创建线程
- Android自学之路-- 02:ContentProvider共享数据
- Android 单击图片切换效果
- 自己写的Android图表库XCL-Charts一些旧的例子
- android经典Demo