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
  • 相关阅读:
    13 数据库主从
    12 数据备份
    11 锁机制
    12 日志
    10 索引(二)
    09 索引
    update kernel 3.10-3.12
    haproxy para config
    mysql slave to master
    storage disk
  • 原文地址:https://www.cnblogs.com/mingfeng002/p/5845753.html
Copyright © 2011-2022 走看看