zoukankan      html  css  js  c++  java
  • android-----JNI中的log打印

    1. 导入log头文件

    在你使用的 .c/ .cpp 文件中

    导入 log.h 头文件

     #include<android/log.h>


    2.在Android.mk 中

    加上

    LOCAL_LDLIBS :=-llog

    注意Android.mk里有一行include $(CLEAR_VARS)

    必须把LOCAL_LDLIBS :=-llog放在它后面才有用,

    否则相当于没写。


    3. 定义LOG 函数

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

     1 #define TAG "myDemo-jni" // 这个是自定义的LOG的标识  
     2 #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,TAG ,__VA_ARGS__) // 定义LOGD类型   
     3 #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG ,__VA_ARGS__) // 定义LOGI类型  
     4 #define LOGW(...) __android_log_print(ANDROID_LOG_WARN,TAG ,__VA_ARGS__) // 定义LOGW类型  
     5 #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG ,__VA_ARGS__) // 定义LOGE类型   
     6 #define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,TAG ,__VA_ARGS__) // 定义LOGF类型 
     7  
     8 #define TAG "myDemo-jni" // 这个是自定义的LOG的标识
     9 #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,TAG ,__VA_ARGS__) // 定义LOGD类型
    10 #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG ,__VA_ARGS__) // 定义LOGI类型
    11 #define LOGW(...) __android_log_print(ANDROID_LOG_WARN,TAG ,__VA_ARGS__) // 定义LOGW类型
    12 #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG ,__VA_ARGS__) // 定义LOGE类型
    13 #define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,TAG ,__VA_ARGS__) // 定义LOGF类型
     

    上述代码中定义的函数

    分别对应于Android 的Java代码中的

     Log.d(), Log.i(), Log.w(),Log.e(), Log.f()等方法.


    4.举例

     1 #include <jni.h> 
     2 #include <string.h> 
     3 #include <android/log.h> 
     4   
     5 #define TAG    "myhello-jni-test" // 这个是自定义的LOG的标识 
     6 #define LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,TAG,__VA_ARGS__) // 定义LOGD类型 
     7   
     8  extern "C" {
     9      JNIEXPORT jstring JNICALL Java_com_snail_helloworld_MainActivity_myhello(JNIEnv * env, jobject obj); 
    10  };
    11   
    12  JNIEXPORT jstring JNICALL Java_com_snail_helloworld_MainActivity_myhello(JNIEnv * env, jobject obj)
    13  {
    14      int i = 0;
    15      LOGD("########## i = %d", i);
    16      return env->NewStringUTF("Hello From CPP");
    17  }
    18  
    19 #include <jni.h>
    20 #include <string.h>
    21 #include <android/log.h>
    22  
    23 #define TAG    "myhello-jni-test" // 这个是自定义的LOG的标识
    24 #define LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,TAG,__VA_ARGS__) // 定义LOGD类型
    25  
    26  extern "C" {
    27      JNIEXPORT jstring JNICALL Java_com_snail_helloworld_MainActivity_myhello(JNIEnv * env, jobject obj);
    28  };
    29  
    30  JNIEXPORT jstring JNICALL Java_com_snail_helloworld_MainActivity_myhello(JNIEnv * env, jobject obj)
    31  {
    32   int i = 0;
    33   LOGD("########## i = %d", i);
    34   return env->NewStringUTF("Hello From CPP");
    35  }

    Android.mk

     1 LOCAL_PATH := $(call my-dir)
     2   
     3 include $(CLEAR_VARS)
     4   
     5 LOCAL_MODULE    := hello
     6 LOCAL_SRC_FILES := hello.cpp
     7 LOCAL_LDLIBS :=-llog
     8   
     9 include $(BUILD_SHARED_LIBRARY) 
    10  
    11 LOCAL_PATH := $(call my-dir)
    12  
    13 include $(CLEAR_VARS)
    14  
    15 LOCAL_MODULE    := hello
    16 LOCAL_SRC_FILES := hello.cpp
    17 LOCAL_LDLIBS :=-llog
    18  
    19 include $(BUILD_SHARED_LIBRARY)
     

    转自:http://www.2cto.com/kf/201307/227148.html

  • 相关阅读:
    C语言数据结构链表
    Servlet中对上传的图片进行大小变换
    网页中有几个框架,在其中一个框架中点击超链接刷新整个页面
    来园子开博了
    学习《java编程思想》导入作者的net.mindview包
    git常用命令汇总
    安装lessloader后,编译项目报错TypeError: this.getOptions is not a function
    数组学习二
    常见文件管理命令
    (转载)Shell语法
  • 原文地址:https://www.cnblogs.com/zl1991/p/6420309.html
Copyright © 2011-2022 走看看