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

  • 相关阅读:
    2019年Pycharm最新激活码_学生党适用
    Day14_分享昨天看到的一句话
    监督学习算法_k-近邻(kNN)分类算法_源代码
    Python学习需要安装的工具
    Python基础学习资料推荐
    总结一下公司项目使用各种较新的前端技术和 Api 的一些经验。
    由 Session 和 Cookie 的区别说起
    我理解的正确的代码
    回忆我是如何赢得一次踢毽子比赛
    日常的例子说明 throttle 和 debounce 的区别
  • 原文地址:https://www.cnblogs.com/zl1991/p/6420309.html
Copyright © 2011-2022 走看看