Qt android 打印调试


推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家: Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

安卓开发,目前主要在windows下开发,虽然可以调试,但是有些库不好调试,只能经过打印来进行。
在上一章中《Qt android 开发环境搭建》中正常搭建环境,按F5就能对工程进行调试。或者如下图:
调试按钮
进行调试

安卓调试

安卓日志

adb 加入path

找到adb所在的路径,并将其加入PATH中。

adb未加入PATH在这里插入图片描述
加入PATH中
在这里插入图片描述
重新打开cmd窗口,adb正常
在这里插入图片描述

adb 查看日志

adb logcat
在这里插入图片描述
这样的日志,太多查看起来比较麻烦。
我们可以写入文件中,再通过工具来进行分析,查找。
adb logcat > log.log
使用notepad++ 打开log.log
在这里插入图片描述

将Qt调试信息输出到logcat中

CMakeLists.txt

# 需要添加这一句
target_link_libraries( android_vlc PRIVATE log )

log.h

#ifndef __LOG_H__
#ifndef __LOG_H__

#ifdef ANDROID
void installLogcatMessageHandler(const char *TAG);
#else
#define installLogcatMessageHandler(TAG)
#endif

#endif

log.cpp


#if defined(ANDROID)
#include "log.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

在main中使用
main.cpp

#include "log.h"
#include <QApplication>
#include <QDebug>
#include <QMutex>

int main()
{
	QApplication a(argc, argv);
    installLogcatMessageHandler("android_log");
    qDebug() << "Debug";
    qWarning() << "qWarning";
    qInfo() << "qInfo";
    qCritical() << "qCritical";
    return a.exec();
}

测试
在这里插入图片描述

工程中使用

开发中,Qt android生成的可执行的工程包,是一个.so文件,最终打包成一个apk,这里如果工程中有多个.so 就不好去单独调试了,这里就更好的去使用日志打印输入。来跟进项目

参考文档

Qt on Android:将Qt调试信息输出到logcat中
QT for android编写的程序如何输出调试信息到android的log日志

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值