將Qt日誌輸出到安卓日誌系統裏
因爲在學習qt on android,所以想把Qt日誌輸出到安卓日誌系統裏,方便程序調試
源代碼: 這裏
1.創建輔助函數,頭文件,源文件見截圖
在頭文件,我們判斷,如果定義了宏ANDROID,我們就安裝一個消息過濾器,接管qt輸出的消息,轉發到Android的日誌系統中,如果沒定義宏ANDROID,就是一個空宏,什麼也不幹
在源文件裏,我們安裝自己的消息過濾器
在消息過濾器裏將qt log類型轉換爲androi log類型
最後調用__android_log_write函數將日誌信息寫入Android日誌系統
PS: 一開始,我沒有 <android/log.h>這個頭文件,後來從NDK裏搜出來了,我的路徑【C:\Qt\android-ndk-r10e\platforms\android-12\arch-mips\usr\include\android\log.h】,拷貝到工程下,就解決了。真機智如我:smiling_face_with_sunglasses:
2.main文件中調用installLogcatMessageHandler,安裝消息過濾器,參數是自定義tag
3.編譯運行,在手機端測試,原諒我的button鬼畜:hugging_face:
4.qt 控制檯輸出
5.總結,qt原生log與android 日誌類對應關係,一一對應
qt | android |
---|---|
QtDebugMsgTest | ANDROID_LOG_DEBUG |
QtWarningMsgTest | ANDROID_LOG_WARN |
QtCriticalMsgTest | ANDROID_LOG_ERROR |
QtInfoMsgTest | ANDROID_LOG_INFO |
QtFatalMsgTest | ANDROID_LOG_FATAL |
6.彙總
qml | qt | android |
---|---|---|
debug,log | QtDebugMsg | ANDROID_LOG_DEBUG |
warn | QtWarningMsg | ANDROID_LOG_WARN |
error | QtCriticalMsg | ANDROID_LOG_ERROR |
info | QtInfoMsg | ANDROID_LOG_INFO |
? | QtFatalMsg | ANDROID_LOG_FATAL |
PS: 我發現這個ANDROID宏是自動的,構建平臺不同,自動識別,好智能有木有