版权所有 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
很简单,我声明了一个函数 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 的系列文章:
分享到:
相关推荐
将logcat输出到屏幕和手机文件的Demo
Android的Logcat用于显示系统的调试信息,可在分别以下几个地方查看和调用logcat: 1.eclipse的Debug模式或DDMS模式下的会有一个Logcat窗口,用于显示log日志 只需在eclipse中启动Android模拟器,切换到DDMS或...
解决华为系列手机调试时不能打印Logcat日志信息
您可能感兴趣的文章:在Android界面上显示和获取Logcat日志输出的方法Android adb logcat 命令查看日志详细介绍Android shell命令行中过滤adb logcat输出的几种方法Android开发之在程序中时时获取logcat日志信息的...
在Android界面上显示和获取Logcat日志输出 在Android界面上显示和获取Logcat日志输出
NULL 博文链接:https://mtj13617254943-126-com.iteye.com/blog/1004521
Android日志工具,支持Logcat输出和文件记录(可自定义大小,默认0.1M),两种显示方式都可以配置是否需要显示
alogcat android app 读取/显示logcat信息。
Android SDK下, 如何在程序中输出日志 以及如何查看日志. 闲话少说,直接进入正题 在程序中输出日志, 使用 android.util.Log 类. 该类提供了若干静态方法 Log.v(String tag, String msg); Log.d(String tag,...
主要针对安卓7.0以上版本,真机调试eclipse不显示Logcat日志的解决方法
补充知识:Android Studio的代码没错,运行时logcat会出现红色语句解决方法 不断的运行调试某一个项目,点击之后logcat会出现想不到的红色语句,或者切换项目打开出现R文件报红。 解决方法: 点击Build—-Clean ...
编译该工程源码生成kernellogd程序,通过adb push到手机,然后执行kernellogd 之后,就可以打印输出内核的调试日志信息
雨松MOMO带你做软件 Android软件开发之程序中时时获取logcat日志信息 黄英大家下载阅读 哇咔咔~~
不使用Eclipse 和 Android Studio,也可以查看安卓日志的软件。告别adb命令行。 注意 该项目是基于Java环境开发,请自行安装Java环境。
Android的Logcat用于显示系统的调试信息,可在分别以下几个地方查看和调用logcat: 1.eclipse的Debug模式或DDMS模式下的会有一个Logcat窗口,用于显示log日志......
亲身试验成功!eclipse在Android7.0的手机上无logcat输出,对应我的博客《eclipse在Android7.0的手机上无logcat输出》,有问题可以给我留言,看到我会尽快回复。
该jar包作用:解决eclipse在Android7.0以及7.0以上的手机上无logcat输出 1.将下载好的ddmlib.jar替换到自己ADT的tools目录lib下E:\adt\sdk\tools\lib 2.将下载好的ddmlib.jar替换到自己ADT的configuration目录org....
本文介绍如何在 shell 命令行中过滤 adb logcat 输出的几个小技巧。 开发当中经常看到别人的 log 如洪水般瞬间刷满了屏幕,对自己有用的信息都被淹没了,影响心情也影响效率。下面是几个我所知道的过滤方法。 1. 只...
Android开发中LogCat工具的使用
Android开发中LogCat工具的使用;LogCat是Android中一个命令行工具,可以用于得到程序的log信息,本附录讲解其使用方法和其中的一些技巧。