Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 如何在ANDROID JNI 的C++中打Log

如何在ANDROID JNI 的C++中打Log

編輯:關於Android編程

最近在研究Android 4.2.2源代碼的C/C++層,需要對代碼進行一些調試,但是奇怪的是,直接添加LOGD("XXXXXXXX");,使用logcat卻看不到任何輸出,換成LOGI、LOGV、LOGW、LOGE也沒有效果。於是在網上查找解決方法,經過幾次試驗,終於找到了,現在貼到下面備忘:

第一步:在對應的mk文件中加入:LOCAL_LDLIBS := -llog
第二步:在要使用LOG的cpp文件中加入:
#include
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "keymatch", __VA_ARGS__)
第三步:這樣就可以使用了:LOGD("我要看到的調試信息^_^"); 這樣,在logcat端看到的輸出是: D/keymatch( 32):我要看到的調試信息^_^ 如果想改變輸出中的各項內容,可以參考相應顏色的標示,比如,如果想定義LOGE,就可以把上面的ANDROID_LOG_DEBUG改成ANDROID_LOG_ERROR,同理,LOGI神馬的也都以此類推:

#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, "ProjectName", __VA_ARGS__)
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , "ProjectName", __VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO , "ProjectName", __VA_ARGS__)
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN , "ProjectName", __VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR , "ProjectName", __VA_ARGS__)

當然,如果不嫌麻煩,也可以直接使用__android_log_print函數,而不define定義LOGxxx 如果還想了解更詳細的內容,也可以參考這篇文章: 《在android 輸出log 信息 用於調試》 另外,有文章稱此方法在編譯動態庫的時候可能會出問題,會提示cannot find -llog的錯誤。意思是找不到liblog.so這個庫文件。 因此需要改成 LOCAL_LDLIBS:= -L$(SYSROOT)/usr/lib -llog 才可以正常編譯。但是我這邊編譯動態庫的時候,好像不用這樣改也行,沒發現編譯時提示“cannot find -llog”的錯誤。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved