NDK開発のログ印刷

3181 ワード

NDKでログを印刷するには、次の3つの手順に従います.
一、Android.mkに次の内容を追加します.
LOCAL_LDLIBS := -lm -llog

  

LOCAL_LDLIBS:=-L$(SYSROOT)/usr/lib -llog

以上の2行のコードを2つ選択します.この行のコードは、include $(CLEAR_VARS)以降に追加する必要があります.そうしないと、効果はありません.例えば、私はcファイルとcppファイルを持っています.それぞれjni 1です.cとjni 3.cppでは、ログを印刷するには、次のように追加する必要があります.
include $(CLEAR_VARS)
LOCAL_LDLIBS := -lm -llog
LOCAL_MODULE    := jni1
LOCAL_SRC_FILES := jni1.c

include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_LDLIBS:=-L$(SYSROOT)/usr/lib -llog
LOCAL_MODULE    := jni3
LOCAL_SRC_FILES := jni3.cpp

include $(BUILD_SHARED_LIBRARY)

二、引用ヘッダファイル
#include <android/log.h>

三、変数の定義
//  TAG  ,     LogCat  TAG   NDK     
#define TAG "JNITEST"
//   info  
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG,__VA_ARGS__)
//   debug  
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__)
//   error  
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG,__VA_ARGS__)
ANDROID_LOG_INFOはログレベルであり、これはLogCatでは1つ1つに対応しており、TAGはフィルタラベルであり、__VA_ARGS__は印刷する実際のログ内容である.
OK!
上記の3つのステップを完了すると、ログを印刷できます.
LOGI("the string is :%s",str1);

注意:ログを印刷するときに文字列がjstringを印刷できない場合は、jstringをC文字列に変換して印刷します(変換方法は前文を参照).