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

  • 相关阅读:
    wzplayer2 支持mac 了,最新谍报
    关于duilib的理解
    DMS的实现转载
    视频通话最新谍报
    新人补钙系列教程之:Function类的重要方法apply()
    新人补钙系列教程之:webgame好友模块原型开发一
    新人补钙系列教程之: 大型 webGame 开发系列之 pipes
    新人补钙系列教程之:模拟java多线程Thread类
    flash学习网站
    新人补钙系列教程之:AS3与服务器通信
  • 原文地址:https://www.cnblogs.com/zl1991/p/6420309.html
Copyright © 2011-2022 走看看