一、引入log庫
-
1.如果是使用android.mk的方式手動生成so庫,在android.mk的配置文件中加入配置:
LOCAL_LDLIBS += -llog
-
2.如果是使用構(gòu)建腳本的方式生成so庫,需要在build.gradle文件的ndk閉包中配置:
defaultConfig { applicationId "com.huyingzi.xxxx" minSdkVersion 15 targetSdkVersion 22 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" ndk{ moduleName "helloword" abiFilters "armeabi","armeabi-v7a","x86" ldLibs "log" //引入log庫 } }
3.如果是使用Cmake的方式構(gòu)建so庫,在CMakeLists.txt文件里面已經(jīng)默認(rèn)引入log庫不需要再自行配制
二、C代碼中引入頭文件
#include <android/log.h>
#define LOG_TAG "System.out"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
三、打印日志的代碼(跟C語言中printf的使用方式一樣)
//打印logcat
LOGD("name=%s age=%f\n",name,age);
四、給jni日志添加開關(guān)
#include <android/log.h>
#define DEBUG 0 //日志開關(guān),1為開,其它為關(guān)
#if(DEBUG==1)
#define LOG_TAG "JNI"
#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE,TAG,__VA_ARGS__)
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
#else
#define LOGV(...) NULL
#define LOGD(...) NULL
#define LOGI(...) NULL
#define LOGE(...) NULL
#endif