android-----JNI中的log列印

來源:互聯網
上載者:User

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函數:

 #define TAG "myDemo-jni" // 這個是自訂的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類型  #define TAG "myDemo-jni" // 這個是自訂的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()等方法.

 


4.舉例


 

#include <jni.h>  #include <string.h>  #include <android/log.h>   #define TAG    "myhello-jni-test" // 這個是自訂的LOG的標識  #define LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,TAG,__VA_ARGS__) // 定義LOGD類型    extern "C" {      JNIEXPORT jstring JNICALL Java_com_snail_helloworld_MainActivity_myhello(JNIEnv * env, jobject obj);  };   JNIEXPORT jstring JNICALL Java_com_snail_helloworld_MainActivity_myhello(JNIEnv * env, jobject obj)  {      int i = 0;      LOGD("########## i = %d", i);      return env->NewStringUTF("Hello From CPP");  } #include <jni.h>#include <string.h>#include <android/log.h>#define TAG    "myhello-jni-test" // 這個是自訂的LOG的標識#define LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,TAG,__VA_ARGS__) // 定義LOGD類型 extern "C" {     JNIEXPORT jstring JNICALL Java_com_snail_helloworld_MainActivity_myhello(JNIEnv * env, jobject obj); }; JNIEXPORT jstring JNICALL Java_com_snail_helloworld_MainActivity_myhello(JNIEnv * env, jobject obj) {  int i = 0;  LOGD("########## i = %d", i);  return env->NewStringUTF("Hello From CPP"); } 


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) LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE    := helloLOCAL_SRC_FILES := hello.cppLOCAL_LDLIBS :=-lloginclude $(BUILD_SHARED_LIBRARY)


 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.