#include <QtDebug>
qInfo() << "hello";
如上,加入头文件(注意:这里的头文件是QtDebug,不是QDebug,也不知道啥时候改的,也不知道有啥区别,先这样吧)后使用qInfo来输出日志,用qDebug()输出不了(妈的。。浪费老子好长时间。。一种植物)。USB线连上自己的手机后,Qt Creator里点击运行,Qt Creator底下的“应用程序输出”一栏会打印出用qInfo()输出的日志。但是这样有个问题,就是手机上退出app后重新打开app,Qt Creator里是打印不了日志的,因为在退出app时就相当于退出运行调试了。那么该怎么办呢?怎么才能在手机重新打开app时还能看到日志输出呢?
这里用到了 Android SDK里的adb工具。
打开此电脑,空白处右键选择属性→左侧选择高级系统设置→高级→环境变量→在系统变量里找到变量为Path的,双击打开,点击新建,把自己电脑里Android SDK目录下adb的绝对路径输入进去,我的是 E:\android-sdk\android-sdk\platform-tools,然后就是各种点确定保存。这时候环境变量设置好了,那么在哪里用cmd打开控制台输入adb指令都能正常了。
我常用的指令是:
adb logcat -c
应该是清空日志记录的功能?clear。
adb logcat -v time -s Tag
仅仅显示指定标签的日志信息,同时显示日志时间。比方 adb logcat -v time -s qnote 。仅仅显示标签为 qnote 的日志信息;假设你想同一时候过滤多个标签,能够用英文半角逗号分隔标签。如 adb logcat -v time -s qnote,test 。
代码工程里加入两个文件:
qDebug2Logcat.h:
#ifndef QDEBUG2LOGCAT_H
#define QDEBUG2LOGCAT_H
#include <QtMsgHandler>
#ifdef ANDROID
void installLogcatMessageHandler(const char *TAG);
#else
#define installLogcatMessageHandler(TAG)
#endif
#endif // QDEBUG2LOGCAT_H
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;
prio = ANDROID_LOG_ERROR;
break;
case QtFatalMsg:
prio = ANDROID_LOG_FATAL;
// abort();
break;
case QtInfoMsg:
prio = ANDROID_LOG_INFO;
break;
default:
break;
}
__android_log_write(prio, g_TAG, localMsg.data());
}
void installLogcatMessageHandler(const char *TAG)
{
g_TAG = (TAG == 0 ? "QDebug" : TAG);
qInstallMessageHandler(messageOutput2Logcat);
}
#endif
然后在 main() 函数前包括 qDebug2Logcat.h 头文件,在 main() 函数体第一行增加以下的代码:
installLogcatMessageHandler("yourLogTag");
到这里就OK了,现在无论在main()函数里,还是在自己的窗口类函数中,用qInfo()都能输出日志。
cmd打开命令行控制台,输入
adb logcat -v time -s yourLogTag
这里的yourLogTag就是main()函数里的yourLogTag,可以自定义编辑。
输入后Qt Creator里运行程序,底下的“应用程序输出”一栏会打印出用qInfo()输出的日志,同时cmd命令行也能打印出日志。手机上退出app后重新打开app,Qt Creator里打印不了日志,但cmd命令行还是能打印出日志。
参考链接:
链接1
链接2文章来源:https://www.toymoban.com/news/detail-739724.html
链接3文章来源地址https://www.toymoban.com/news/detail-739724.html
到了这里,关于Qt for Android代码中输出日志的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!