第一步:gradle配置ndk
ndk {
moduleName "Iso8583Lib"
ldLibs "log", "z", "m"
abiFilters "armeabi", "armeabi-v7a", "x86" //輸出指定三種abi體系結構下的so庫,目前可有可無。
}
第二步:在需要的C文件加載頭
#include <android/log.h>
第三步:定義打印方便使用的函數
#define LOG_TAG "C_TAG"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
第四步:測試使用
#include <jni.h> #include <com_example_lanhe_android_jnistringdemo_jni_HelloWorld.h> #include <android/log.h>
#define LOG_TAG "C_TAG"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) JNIEXPORT jstring JNICALL Java_com_example_lanhe_1android_jnistringdemo_jni_HelloWorld_getHelloWorld (JNIEnv *env, jobject thiz){ jstring hello = (*env)->NewStringUTF(env, "Hello Jni"); int helloLen=(*env) -> GetStringLength(env,hello); LOGD("hello.length=%d",helloLen); return hello; }
結果如下:

額外:使用 __android_log_write 也是可以的。

備注:
調用其中的日志打印:
int __android_log_write(int prio, const char *tag, const char *text);
第一個參數為打印級別,為以下枚舉之一:
typedef enum android_LogPriority { ANDROID_LOG_UNKNOWN = 0, ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */ ANDROID_LOG_VERBOSE, ANDROID_LOG_DEBUG, ANDROID_LOG_INFO, ANDROID_LOG_WARN, ANDROID_LOG_ERROR, ANDROID_LOG_FATAL, ANDROID_LOG_SILENT, /* only for SetMinPriority(); must be last */ } android_LogPriority;
參考資料:
http://blog.csdn.net/h183288132/article/details/50379450
