Android JNI开发 Android Log的引入:
1.C代码中添加宏的定义:
// 显示Android log的头文件
#include <android/log.h>
#define LOG_TAG "System.out"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
2.在Android.mk文件中引入log库:
注意:
在android.mk 文件中找到
include $(CLEAR_VARS) 这一行,
在下面增加一行:
LOCAL_LDLIBS := -lm -llog
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#添加log的函数库
LOCAL_LDLIBS := -lm -llog
LOCAL_MODULE := Encrypt
LOCAL_SRC_FILES := encrypt.c
include $(BUILD_SHARED_LIBRARY)
错误解决:
产生的原因是引入函数库是是在:
Log 函数库的引入要在:
include $(CLEAR_VARS) 这一行,
在下面增加一行:
LOCAL_LDLIBS := -lm -llog
F:/AuditonProject/TestICBClient/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/Encrypt/encrypt.o: In function `Java_test_com_zh_testicbclient_JniUtils_JniUtil_safepay':
F:/AuditonProject/TestICBClient/jni/encrypt.c:143: undefined reference to `__android_log_print'
F:/AuditonProject/TestICBClient/jni/encrypt.c:144: undefined reference to `__android_log_print'
F:/AuditonProject/TestICBClient/jni/encrypt.c:153: undefined reference to `__android_log_print'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [F:/AuditonProject/TestICBClient/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libEncrypt.so] Error 1
一睹打印在控制台的样子:
打印字符串加int值:
LOGD("打印的的值==%d",5);