Android NDK 開發時,想要在 .c 文件中打印一些調試信息的話,是不能使用 printf() 方法的,NDK 根本不支持,就算寫了,在
LogCat 中也不會顯示,正確的方式應該是 調用NDK 下的log.h 來打印Log 日志,具體方法如下:
1. 導入log頭文件:在你使用的 .c/ .cpp 文件中,導入 log.h 頭文件: #include<android/log.h>
2. 定義LOG 函數:先定義一個全局變量,再定義一些輸出的LOG函數:
- #define LOG "ffmpegDemo-jni" // 這個是自定義的LOG的標識
- #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG,__VA_ARGS__) // 定義LOGD類型
- #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG,__VA_ARGS__) // 定義LOGI類型
- #define LOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG,__VA_ARGS__) // 定義LOGW類型
- #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG,__VA_ARGS__) // 定義LOGE類型
- #define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,LOG,__VA_ARGS__) // 定義LOGF類型
上述代碼中定義的函數,分別對應於Android 的Java代碼中的 Log.d(), Log.i(), Log.w(),Log.e(), Log.f()等方法;
3. 使用上述方法:在.c 代碼中直接按照一下方式書寫:
- LOGD(LOG, "這是Debug的信息");
- LOGE(LOG, "程序錯誤!!!");
除此之外,更可以給在打印時帶上一些變量:
- int width=10;
- int height=20;
- LOGI(LOG, "長和寬分別為 %d ,%d“,width,height);
這種方式更加靈活,非常類似於 C語言中的 printf()函數。
全文結束,希望能給大家一些幫助~