我们在开发Android过程中,经常会使用Log来打印一些重要的信息来检测程序的运行状态。
在jni开发中调试程序是一个不小的挑战,但是也可以使用log来打印信息,所以能够方便我们调试程序。
1、在头文件中添加引用
#include <android/log.h>
#ifndef LOG_TAG
#define LOG_TAG "ANDROID_LAB" //log信息的标签
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
#endif
2、app/build.gradle中添加配置
ndk {
moduleName "Myso";
ldLibs "log", "z", "m"
}
3、一个例子
JNIEXPORT jstring JNICALL Java_com_example_testandroid_app_MainActivity_getStringFromJni
(JNIEnv *env, jobject obj)
{
//get class
LOGE("get class");
jclass cls = create_class(env, "com/example/testandroid/app/MainActivity");
LOGE("getInstance");
jobject object = getInstance(env, cls);
//get method id
//param (class, method_name, method_sigmature)
LOGE(object == 0 ? "getInstance fail" : "getInstance success");
jmethodID mID = (*env)->GetMethodID(env, cls, "getHelloFromJava", "()Ljava/lang/String;");
//call method
LOGE(mID == 0 ? "GetMethodID fail" : "GetMethodID success");
// char *temp = ;
jstring str = (*env)->CallObjectMethod(env, object, mID);
LOGE("return");
return str;//(*env)->NewStringUTF(env, "this is from jni!");
}
4、函数对应
LOGE("") Log.e(tag, "")
LOGI("") Log.i(tag, "")
LOGV("") Log.v(tag, "")
LOGD("") Log.d(tag, "")
LOGW("") Log.w(tag, "")