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

作者: IT魔幻师 | 来源:发表于2017-06-28 18:12 被阅读135次

    一、引入log库

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

        LOCAL_LDLIBS += -llog
      
    • 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 <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日志添加开关

    #include <android/log.h>
    #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控制台

        本文链接:https://www.haomeiwen.com/subject/dezucxtx.html