日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Qt on Android:将Qt调试信息输出到logcat中

發(fā)布時間:2024/4/17 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt on Android:将Qt调试信息输出到logcat中 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ??版權(quán)全部 foruok 。如需轉(zhuǎn)載敬請注明出處(http://blog.csdn.net/foruok)

? ? 假設(shè)你在目標 Android 設(shè)備上執(zhí)行了 Qt on Android 應用,你可能希望看到程序輸出的日志信息。 Android SDK 中有 adb 工具,當你連接了目標設(shè)備,能夠使用 adb logcat 查看 Android 設(shè)備上應用輸出的日志。

? ? 先介紹一下 adb 工具的使用。一般我經(jīng)常使用下列命令:

  • adb logcat ,查看手機或其它設(shè)備上輸出的全部日志
  • adb logcat -v time ,讓日志帶時間信息
  • adb logcat -v time -s Tag 。僅僅顯示指定標簽的日志信息,同一時候顯示日志時間。比方 adb logcat -v time -s qnote 。僅僅顯示標簽為 qnote 的日志信息;假設(shè)你想同一時候過濾多個標簽,能夠用英文半角逗號分隔標簽。如 adb logcat -v time -s qnote,test 。

? ? 為了把日志導入 Android 系統(tǒng)的日志系統(tǒng)(一個環(huán)形內(nèi)存日志系統(tǒng))。我寫了一個輔助函數(shù),方便大家使用。

? ? 先看頭文件 qDebug2Logcat.h :

#ifndef QDEBUG2LOGCAT_H #define QDEBUG2LOGCAT_H#ifdef ANDROID void installLogcatMessageHandler(const char *TAG); #else #define installLogcatMessageHandler(TAG) #endif#endif // QDEBUG2LOGCAT_H
? ? 非常easy,我聲明了一個函數(shù) installLogcatMessageHandler ,假設(shè)未定義 ANDROID 宏。它就是一個空宏,什么也不干;否則就安裝一個消息過濾器。接管 Qt 輸出的消息,轉(zhuǎn)發(fā)到 Android 的日志系統(tǒng)中。

? ? 看源文件 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
? ? 實現(xiàn)也非常easy,調(diào)用 qInstallMessageHandler 把 messageOutput2Logcat 設(shè)置為 Qt 應用的默認消息處理器。 messageOutput2Logcat 函數(shù)則將 Qt 的調(diào)試消息級別映射到 Android 的日志級別上并調(diào)用 __android_log_write() 函數(shù)將日志信息寫入 Android 日志系統(tǒng)。?

? ? 你能夠直接使用這兩個文件,增加到你的項目中就可以。

然后在 main() 函數(shù)前包括 qDebug2Logcat.h 頭文件,在 main() 函數(shù)體第一行增加以下的代碼:

   installLogcatMessageHandler("yourLogTag");
? ? 好了,一切就緒了。


? ?版權(quán)全部 foruok 。如需轉(zhuǎn)載敬請注明出處(http://blog.csdn.net/foruok)。

我翻譯的大神 BogDan Vatra 的 Qt on Android 系列文章:

  • Qt on Android Episode 1(翻譯)
  • Qt on Android Episode 2(翻譯)
  • Qt on Android Episode 3(翻譯)
  • Qt on Android Episode 4(翻譯)

? ? 我的關(guān)于 Qt on Android 的系列文章:

  • Windows下Qt 5.2 for Android開發(fā)入門
  • Qt for Android 部署流程分析
  • Qt for Android 編譯純Cproject
  • Windows下Qt for Android 編譯安卓C語言可執(zhí)行程序
  • Qt on Android:圖文具體解釋Hello World全過程

總結(jié)

以上是生活随笔為你收集整理的Qt on Android:将Qt调试信息输出到logcat中的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。