C语言中打印log到android控制台

一、引入log库

  • 1.如果是使用android.mk的方式手动生成so库,在android.mk的配置文件中加入配置:

      LOCAL_LDLIBS += -llog
    
C语言中打印log到android控制台_第1张图片
  • 2.如果是使用构建脚本的方式生成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的方式构建so库,在CMakeLists.txt文件里面已经默认引入log库不需要再自行配制

二、C代码中引入头文件

#include 
#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日志添加开关

#include 
#define DEBUG 0 //日志开关,1为开,其它为关
#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

你可能感兴趣的:(C语言中打印log到android控制台)