Android-JNIでログ印刷を実現
1894 ワード
今日はAndroid-JNIがログを印刷する方式を記録して、開発しやすいです!
一、logヘッダファイルのインポート
ログを印刷する必要がある.c/.cppファイルにlogをインポートする.hファイル
二、Android.mkに加算
注意しろmkにはinclude$(CLEAR_VARS)が1行あり、LOCAL_LDLIBS:=-llogはその後ろに置いてから有効になります.
三、LOG関数を定義し、まずグローバル変数を定義し、出力のLOG関数を定義する.
上記コードで定義関数は、AndroidのJavaコードのLogにそれぞれ対応する.d()、Log.i(),、Log.w()、Log.e(), Log.f()等の方法
四、使用例
Android.mk
五、結びの言葉
以上の手順でjniでログを印刷することができます!
一、logヘッダファイルのインポート
ログを印刷する必要がある.c/.cppファイルにlogをインポートする.hファイル
#include
二、Android.mkに加算
LOCAL_LDLIBS :=-llog
注意しろmkにはinclude$(CLEAR_VARS)が1行あり、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
#include
#include
#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でログを印刷することができます!