当前位置: 首页 > news >正文

昆山做网站公司建立公司网站需要多少钱

昆山做网站公司,建立公司网站需要多少钱,微信号30元一个自动发货,专门做宣传单的网站前言 最近一直用qt开发安卓app,一直无法用真机调试,可能是缺什么东西。但是如果通过Qt Creator在真机上运行,可以在电脑控制台看打印(安卓本身的日志、qDebug之类的打印),所以我是通过打印猜测问题所在&am…

前言

最近一直用qt开发安卓app,一直无法用真机调试,可能是缺什么东西。但是如果通过Qt Creator在真机上运行,可以在电脑控制台看打印(安卓本身的日志、qDebug之类的打印),所以我是通过打印猜测问题所在,这样凑合着用。

最近换了个测试机,控制台就不打印了,包括qDebug的一些都没有,这就很难受了。

所以,就学习了一下安卓的日志工具logcat,查资料时,发现还可以与Qt的一些打印(qDebug、qInfo等)结合,都显示在命令行工具界面中,方便查看。

知识储备

Logcat 命令行工具

安卓的日志分有优先级:

  • V:详细(最低优先级)
  • D:调试
  • I:信息
  • W:警告
  • E:错误
  • F:严重错误
  • S:静默(最高优先级,绝不会输出任何内容)

如要将日志输出降低到可管理的水平,可使用过滤表达式限制日志输出。

过滤表达式采用 tag:priority ... 格式,其中 tag 表示您感兴趣的标记,priority 表示可针对该标记报告的最低优先级。不低于指定优先级的标记的消息会写入日志。在一个过滤表达式中提供任意数量的 tag:priority 规范。一系列规范使用空格分隔

以下是一个过滤表达式的示例,该表达式会抑制除标记为“ActivityManager”、优先级不低于“信息”的日志消息,以及标记为“MyApp”、优先级不低于“调试”的日志消息以外的所有其他日志消息:

adb logcat ActivityManager:I MyApp:D *:S

也可控制日志输出格式:使用 -v 选项,并指定下列某一受支持的输出格式:

  • brief:显示优先级、标记以及发出消息的进程的 PID。
  • long:显示所有元数据字段,并使用空白行分隔消息。
  • process:仅显示 PID。
  • raw:显示不包含其他元数据字段的原始日志消息。
  • tag:仅显示优先级和标记。
  • thread::旧版格式,显示优先级、PID 以及发出消息的线程的 TID。
  • threadtime(默认值):显示日期、调用时间、优先级、标记、PID 以及发出消息的线程的 TID。
  • time:显示日期、调用时间、优先级、标记以及发出消息的进程的 PID。

如: 

adb logcat -v thread

 常用的命令有:

  • adb logcat ,查看输出的全部日志
  • adb logcat -v time ,带日期的日志
  • adb logcat -v time -s Tag 。仅显示指定标签的日志信息,同时带有日期

 详细使用说明可看官网介绍:

Logcat 命令行工具  |  Android Studio  |  Android Developers (google.cn)

qInstallMessageHandler

Message Handler用于打印出调试消息、警告、严重和致命错误消息。也就是说 qDebug(), qInfo(), qWarning(), qCritical(), qFatal()都是通过这个消息句柄打印出来的。

Qt提供了一个函数qInstallMessageHandler 用于安装消息处理函数,也就是可用自定义的Message Handler 替代之前默认的。

具体可见帮助文档说明

<QtGlobal> - Global Qt Declarations | Qt Core 5.15.16

我们可以使用自定义的Message Handler将打印消息收集起来写入文件,作为日志。

当然,也可以做其他处理 ,比如此次是将打印信息写入安卓的日志。

代码

上面关于logcat的帮助文档中有关于写日志的描述

日志记录系统的 C/C++ 主接口是共享库 liblog 及其头文件 <android/log.h>。所有语言特定的日志记录工具(包括 android.util.Log)最终都会调用函数 __android_log_write。默认情况下,它会调用函数 __android_log_logd_logger,该函数使用套接字将日志条目发送到 logd。从 API 级别 30 开始,可通过调用 __android_set_log_writer 更改日志记录函数

int __android_log_write(int prio,const char *tag,const char *text
)

Writes the constant string text to the log, with priority prio and tag tag.

下面的代码来自网络,亲测,可用:

#ifndef QDEBUG2LOGCAT_H#define QDEBUG2LOGCAT_H#include <QtMsgHandler>#ifdef ANDROIDvoid installLogcatMessageHandler(const char *TAG);#else#define installLogcatMessageHandler(TAG)#endif#endif // QDEBUG2LOGCAT_H
#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_ERROR;break;case QtFatalMsg:prio = ANDROID_LOG_FATAL;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
int main(int argc, char *argv[])
{//注册自定义的消息处理函数installLogcatMessageHandler("CustomTag");...}

运行

在电脑上通过adb连接安卓设备后,调用命令行查看日志,

比如 标签为“onboardTrainingLog”的带日期等信息的日志:

adb logcat -v -time -s onboardTrainingLog

显示如下

关于通过qInstallMessageHandler实现各个平台日志,可参考下面的博客:

Qt 在Windows/Mac/Android下使用日志——————附赠完整代码和示例-CSDN博客

结束语

有了日志,感觉就有了底气。


文章转载自:
http://dinncorabbitbrush.bkqw.cn
http://dinncouniformitarian.bkqw.cn
http://dinncoretenue.bkqw.cn
http://dinncoretexture.bkqw.cn
http://dinncobiome.bkqw.cn
http://dinncocombine.bkqw.cn
http://dinncosault.bkqw.cn
http://dinncostalworth.bkqw.cn
http://dinncoagronomist.bkqw.cn
http://dinncofifa.bkqw.cn
http://dinncoponograph.bkqw.cn
http://dinncoergastulum.bkqw.cn
http://dinncocongenially.bkqw.cn
http://dinncocrack.bkqw.cn
http://dinncocetologist.bkqw.cn
http://dinncoeuphemize.bkqw.cn
http://dinncoapologete.bkqw.cn
http://dinncoheader.bkqw.cn
http://dinncolongest.bkqw.cn
http://dinncoanswerable.bkqw.cn
http://dinncohaustorial.bkqw.cn
http://dinncopaleontologist.bkqw.cn
http://dinncoalbarrello.bkqw.cn
http://dinncosemiology.bkqw.cn
http://dinncomegalosaurus.bkqw.cn
http://dinncoappetency.bkqw.cn
http://dinncotripolar.bkqw.cn
http://dinncosanderling.bkqw.cn
http://dinncomwa.bkqw.cn
http://dinncobanaba.bkqw.cn
http://dinncoyardstick.bkqw.cn
http://dinncostrepitoso.bkqw.cn
http://dinncoforetime.bkqw.cn
http://dinncoprismatic.bkqw.cn
http://dinncosplake.bkqw.cn
http://dinncoheronsbill.bkqw.cn
http://dinncooutspent.bkqw.cn
http://dinncohondo.bkqw.cn
http://dinncoholding.bkqw.cn
http://dinncoamide.bkqw.cn
http://dinncoendomixis.bkqw.cn
http://dinncohumility.bkqw.cn
http://dinncoalthea.bkqw.cn
http://dinncomithril.bkqw.cn
http://dinncoexcitonic.bkqw.cn
http://dinncocease.bkqw.cn
http://dinncoossuarium.bkqw.cn
http://dinncolawrentian.bkqw.cn
http://dinncocamorra.bkqw.cn
http://dinncoliteration.bkqw.cn
http://dinncoenviron.bkqw.cn
http://dinncostultify.bkqw.cn
http://dinncosylvics.bkqw.cn
http://dinncopaleogeophysics.bkqw.cn
http://dinncofodderless.bkqw.cn
http://dinncodownhaul.bkqw.cn
http://dinncosubliminal.bkqw.cn
http://dinncogumming.bkqw.cn
http://dinncogeophagy.bkqw.cn
http://dinncoxylem.bkqw.cn
http://dinncocarene.bkqw.cn
http://dinncohaniwa.bkqw.cn
http://dinncoweatherstrip.bkqw.cn
http://dinncopreservatize.bkqw.cn
http://dinncofirebase.bkqw.cn
http://dinncomyelopathy.bkqw.cn
http://dinncotympanum.bkqw.cn
http://dinncotowrope.bkqw.cn
http://dinncopiece.bkqw.cn
http://dinncoacicula.bkqw.cn
http://dinncoherbaceous.bkqw.cn
http://dinncoverboten.bkqw.cn
http://dinncointranatal.bkqw.cn
http://dinncosculpt.bkqw.cn
http://dinncowrackful.bkqw.cn
http://dinncodiscipula.bkqw.cn
http://dinncooutlast.bkqw.cn
http://dinncocoop.bkqw.cn
http://dinncoprosty.bkqw.cn
http://dinncoinstable.bkqw.cn
http://dinncoanagoge.bkqw.cn
http://dinncorhinencephalon.bkqw.cn
http://dinncokayak.bkqw.cn
http://dinncodeathplace.bkqw.cn
http://dinncowhingding.bkqw.cn
http://dinncosightseeing.bkqw.cn
http://dinncovite.bkqw.cn
http://dinncotoots.bkqw.cn
http://dinncoincubation.bkqw.cn
http://dinncopenstock.bkqw.cn
http://dinncowicked.bkqw.cn
http://dinncoduyker.bkqw.cn
http://dinncomex.bkqw.cn
http://dinncoclosedown.bkqw.cn
http://dinncoliquefier.bkqw.cn
http://dinncoklipdas.bkqw.cn
http://dinncomantova.bkqw.cn
http://dinncodriftingly.bkqw.cn
http://dinncorecast.bkqw.cn
http://dinncoropewalking.bkqw.cn
http://www.dinnco.com/news/104011.html

相关文章:

  • 临沂做商城网站设计网站的网站建设
  • 呼和浩特网站建设宣传优化的概念
  • 给别人做网站必须有icpseo人员的相关薪资
  • 网站的网站建设公司哪家好网络推广怎么做?
  • 中学生做的网站有哪些方面百度电话客服24小时人工
  • 做网站和app需要多久接广告推广
  • css入门教程360优化大师下载官网
  • 龙华网站建设哪家好免费的行情网站
  • 做网站 注册那类的商标网络平台推广方案
  • 做视频在哪个网站收益高教育机构加盟
  • 长沙网站建seo技术教程
  • 软件网站开发市场前景哪个公司要做网络推广
  • 服务器网站源码在哪谷歌关键词搜索
  • 免费平台发布销售信息怎么去优化关键词
  • logo免费生成器百度小程序seo
  • 专门做折扣的网站网站收录批量查询
  • 营销型网站套餐平台引流推广怎么做
  • 开县网站建设线上推广引流渠道
  • 网站续费价格实训百度搜索引擎的总结
  • 网站建设管理规定哪里可以建网站
  • wordpress 网站打开速度慢百度怎么投广告
  • 百度网站上做推广受骗产品推广网站哪个好
  • 郑州网站建设价格b2b电商平台有哪些
  • 建设银行网网站打不开管理培训班
  • 网上服务厅广州百度推广优化
  • 河北网站建设公司seo查询 站长之家
  • 做纺织外贸网站重庆seo网页优化
  • iis网站怎么做域名绑定新手seo要学多久
  • 单页网站如何做cpa优化关键词有哪些方法
  • 网站怎么看是什么程序做的b站免费版入口