• Android NDK开发 Jni中打日志LOG(二)


     HelloJni.c文件中,加入头文件和函数声明。最终文件如下:

    #include <jni.h>
    #include <string.h>
    #include<android/log.h>
    
    #define  LOG    "HelloJni"
    #define LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,LOG,__VA_ARGS__) // 定义LOGD类型
    #define LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG,__VA_ARGS__) // 定义LOGI类型
    #define LOGW(...)  __android_log_print(ANDROID_LOG_WARN,LOG,__VA_ARGS__) // 定义LOGW类型
    #define LOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG,__VA_ARGS__) // 定义LOGE类型
    
    JNIEXPORT jstring JNICALL
    Java_ndk_test_com_testndk_TestJni_getString(JNIEnv *env, jclass type) {
        LOGI("call from jni!");
        return (*env)->NewStringUTF(env, "from jni");
    }

    记得#include<android/log.h>

    除了ANDROID_LOG_INFO这个日志级别,还有如下的:

     ANDROID_LOG_UNKNOWN
     ANDROID_LOG_DEFAULT 
     ANDROID_LOG_VERBOSE
     ANDROID_LOG_DEBUG
     ANDROID_LOG_INFO
     ANDROID_LOG_WARN
     ANDROID_LOG_ERROR
     ANDROID_LOG_FATAL
     ANDROID_LOG_SILENT

    如果出现 undefined reference to `__android_log_print'的编译异常在android studio的build文件里面

    需要添加 ldLibs.addAll(['android', 'log'])

    ndk {
                moduleName = 'hello-jni'
                ldLibs.addAll(['android', 'log'])
         }

    好了,运行程序吧 

    工具类

    #ifndef LIBJPEG_JNILOG_H
    #define LIBJPEG_JNILOG_H
    
    #define  LOG    "libimg"
    #define LOGOPEN 1 //日志开关,1为开,其它为关
    
    #if(LOGOPEN==1)
    #define LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,LOG,__VA_ARGS__) // 定义LOGD类型
    #else
    #define LOGD(...) NULL
    #endif
    
    
    #if(LOGOPEN==1)
    #define LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG,__VA_ARGS__) // 定义LOGI类型
    #else
    #define LOGI(...) NULL
    #endif
    
    #if(LOGOPEN==1)
    #define LOGW(...)  __android_log_print(ANDROID_LOG_WARN,LOG,__VA_ARGS__) // 定义LOGW类型
    #else
    #define LOGW(...) NULL
    #endif
    
    #if(LOGOPEN==1)
    #define LOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG,__VA_ARGS__) // 定义LOGE类型
    #else
    #define LOGE(...) NULL
    #endif
    
    #endif //LIBJPEG_JNILOG_H
  • 相关阅读:
    一次排查线上接口偶发异常耗时引起的思考!
    台阶很高,青蛙跳不跳?
    从零开始认识堆排序
    Redis SDS 深入一点,看到更多!
    偏见是怎么产生的?
    TCP 粘包拆包
    Netty中的这些知识点,你需要知道!
    心有 netty 一点通!
    服务化最佳实践
    职场的“诱惑”?
  • 原文地址:https://www.cnblogs.com/mingfeng002/p/5845753.html
Copyright © 2020-2023  润新知