Qt for Android代码中输出日志

这篇具有很好参考价值的文章主要介绍了Qt for Android代码中输出日志。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#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

链接3文章来源地址https://www.toymoban.com/news/detail-739724.html

到了这里,关于Qt for Android代码中输出日志的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT6 for android 安装教程记录(版本Qt6.5.2)

    本文记录首次安装QT for andriod的详细记录。 网上的信息和资料非常多,收集和整理以及遇到的问题也各异,对新手首次接触相关开发和部署环境并不是清晰,因此,特将相关详细配置记录。 首先,开发QT for andriod 不建议使用QT5.15的版本,因为该版本不能区分相关的CPU架构,而

    2024年02月03日
    浏览(38)
  • Qt Creator导入第三方so库和jar包——Qt For Android

    之前了解了在Android Studio下导入so库和jar包,现在实现如何在Qt上导入so库和jar包。 下面是我安卓开发(需调用安卓接口的代码)的目录(图1),此目录结构和原生态环境(Android Studio)下开发的结构很相似: 图1 在Qt  Creator上导入so库和jar包,比在Android Studio上简单很多,只需

    2024年04月29日
    浏览(30)
  • Qt for android填坑历程(版本5.15.2)

    最近在学习Qt,移动端的应用很有诱惑力不是?那咱们也走起!环境搭建是第一步,按照网上N多的教程,一步一步做过来,然并卵啊。 一部分问题按照网上教程能解决,这里就不多做提及。 现在Qt安装除非选择老版本,一般都是在线安装。下载完在线安装工具后,为了不浪费

    2024年02月20日
    浏览(23)
  • 蓝牙客户端QBluetoothSocket的使用——Qt For Android

    经典蓝牙(Bluetooth Classic) :分为基本速率/增强数据速率(BR/EDR), 79个信道,在2.4GHz的(ISM)频段。支持点对点设备通信,主要用于实现无线音频流传输,已成为无线扬声器、耳机和车载娱乐系统背后的标准无线电协议。经典蓝牙还支持数据传输程序,包括移动打印。 低功耗蓝

    2024年02月09日
    浏览(43)
  • windows11下Qt6.5开发环境安装及QT for Android环境搭建(含虚拟机的创建)

    最近想升级Qt6.5及顺便配置Android开发环境。于是在网上找了各种教程,结果在配置Android开发环境都以失败告终。最终花了很长时间才搞掂。接下来分享比较好的安装方法以及安装注意事项。 建议用中科大或清华的镜像下载在线安装器,官网的很慢。链接如下: 下载在线安装

    2024年02月13日
    浏览(47)
  • 使用 Qt for Android 获取并利用手机传感器数据(上篇)开发环境省心搭建

    现代手机拥有许多传感器,包括地磁、姿态、GPS、光照、温度、气压、摄像、声音、电磁等,完全就是一个高度集成的科学仪器。不夸张的说,一部手机加上一个外围的计算机和控制系统,做一个功能较强的自主移动机器人并不是不可能。但是,很多APP都只是局限于自身的功

    2024年02月03日
    浏览(32)
  • 使用 Qt for Android 获取并利用手机传感器数据(下篇)使用C++实现功能

    在上一篇,我们搭建了开发环境。本篇,使用C++代码真正实现功能。我们使用UDP协议从手机上指定发送的目的地、端口。效果如下图,完整工程参考https://gitcode.net/coloreaglestdio/qtcpp_demo/-/tree/master/android/sensors2pc: 移动端1 移动端2 桌面 我们建立一个Qt的Widgets程序,添加 positio

    2024年02月13日
    浏览(32)
  • Qt调试详细日志文件输出

    qInstallMessageHandle 安装消息,注册 回调函数 ,对qDebug()、 qWarning()、qCritial()、qInfo()、qFatal()  等函数输出信息重定向处理。 注明 :以下方法仅适用于 Qt5 及以上版本 。 目的 :生成log.txt日志文件,记录详细日志信息(包括等级、所在文件、所在行号、描述信息、产生时间等)

    2024年02月09日
    浏览(30)
  • Qt重定向QDebug,Qt/C++开源作品39-日志输出增强版V2022

    原文链接:https://blog.csdn.net/gongjianbo1992/article/details/108030391 相对于第三方的日志库,在 Qt 中使用 QDebug 打印更便捷,有时候也需要对 QDebug 输出进行重定向,如写入文件等。 在 Qt4 中使用 qInstallMsgHandler 函数设置重定向的函数指针: 在 Qt5 中应该使用 qInstallMessageHandler 来注册函

    2024年02月08日
    浏览(35)
  • Qt配置Android开发

    1.使用Qt5.14.2 2.安装java和SDK,NDK 具体参考该博客【原创】基于Qt5.14的一站式安卓开发环境搭建_qt安卓开发环境搭建_Jamie.T的博客-CSDN博客 3.后续可能会遇到的问题: ①SDK配置问题: 若出现以下编译错误,是build-tools 28.0.3没有安装,因此我们需要再返回SDK Manager.exe中,去安装它

    2024年02月14日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包