zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    线段树快速查找区间值
    html学习笔记
    区块链是怎么运行的
    【C++ 流类库与输入输出 】实验七
    【C++ 实验六 继承与派生】
    10天冲刺第四天后端app开发
    10天冲刺第三天后端app开发
    10天冲刺第二天之完成后端
    第二次冲刺第一天之后台管理
    第一阶段--冲刺总结
  • 原文地址:https://www.cnblogs.com/mingfeng002/p/5845753.html
Copyright © 2011-2022 走看看