美文网首页
Android-JNI实现打印Log

Android-JNI实现打印Log

作者: 放羊娃华振 | 来源:发表于2019-11-15 13:09 被阅读0次

    今天记录下Android-JNI实现打印Log的方式,方便开发!

    一、导入log头文件

    在需要打印Log的 .c/ .cpp 文件中导入 log.h 文件

     #include<android/log.h>
    

    二、在Android.mk 中加上

    LOCAL_LDLIBS :=-llog
    

    注意Android.mk里有一行include $(CLEAR_VARS),必须把LOCAL_LDLIBS :=-llog放在它后面才会生效。

    三、 定义LOG 函数,先定义一个全局变量,再定义一些输出的LOG函数:

    #define TAG "dzh" // 这个是自定义的LOG的标识 
    #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,TAG ,__VA_ARGS__) // 定义LOGD类型 
    #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG ,__VA_ARGS__) // 定义LOGI类型 
    #define LOGW(...) __android_log_print(ANDROID_LOG_WARN,TAG ,__VA_ARGS__) // 定义LOGW类型 
    #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG ,__VA_ARGS__) // 定义LOGE类型 
    #define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,TAG ,__VA_ARGS__) // 定义LOGF类型
    

    上述代码中定义的函数分别对应于Android 的Java代码中的 Log.d()、Log.i(),、Log.w()、Log.e(), Log.f()等方法.

    四、使用例子

    #include <jni.h>
    #include <string.h>
    #include <android/log.h>
     
    #define TAG    "dzh" // 这个是自定义的LOG的标识
    #define LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,TAG,__VA_ARGS__) // 定义LOGD类型
     
     extern "C" {
         JNIEXPORT jstring JNICALL Java_com_dzh_helloworld_MainActivity_hello(JNIEnv * env, jobject obj);
     };
     
     JNIEXPORT jstring JNICALL Java_com_dzh_helloworld_MainActivity_hello(JNIEnv * env, jobject obj){
             int i = 0;
             char * str ="Im test log!"
             LOGD("log value => %d", i);
             LOGD("log value => %s", str);
         return env->NewStringUTF("jni text");
     }
    
    

    Android.mk

    LOCAL_PATH := $(call my-dir)
     
    include $(CLEAR_VARS)
     
    LOCAL_MODULE    := hello
    LOCAL_SRC_FILES := hello.cpp
    LOCAL_LDLIBS :=-llog
     
    include $(BUILD_SHARED_LIBRARY)
    

    五、结语

    通过上面的步骤就能实现在jni中打印Log了!

    相关文章

      网友评论

          本文标题:Android-JNI实现打印Log

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