NDK开发,打印日志也是一个很重要的功能,新建NDK工程的时候会自动集成log的库,下面介绍下手动添加log日志库的方法。
一:build.gradle增加log的库
android {
...
ndk {
ldLibs "log"
}
}
二:CMakeLists.txt增加log库和依赖
find_library(
log-lib
log
)
target_link_libraries(
${PROJECT_NAME}
${log-lib}
)
完整内容:
cmake_minimum_required(VERSION 3.4.1)
# 项目名称
PROJECT(DataEncryptionLib)
# 设置项目路径变量,便于后面引用
set(SRC_ROOT_PATH src/main/jni)
# 定义要编译的文件列表
file(GLOB CPP_FILES "${SRC_ROOT_PATH}/DataEncryption.cpp")
# 设置要编译的源文件
set(SOURCE_FILES ${CPP_FILES})
# 指定头文件目录
include_directories(${SRC_ROOT_PATH}/include/)
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES})
find_library(
log-lib
log
)
target_link_libraries(
${PROJECT_NAME}
${log-lib}
)
三:增加log的头文件
jni目录下,创建include/android_log.h,这个目录已经在CMakeList.txt里面指定过了,include_directories(${SRC_ROOT_PATH}/include/)
#ifndef SOLIBENCRYPTION_ANDROID_LOG_H
#define SOLIBENCRYPTION_ANDROID_LOG_H
#include<android/log.h>
#define LOG_TAG "jniLog"
#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE,LOG_TAG,__VA_ARGS__)
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
#define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,LOG_TAG,__VA_ARGS__)
#endif //SOLIBENCRYPTION_ANDROID_LOG_H
四:使用
cpp文件里面
#include "include/android_log.h" // 引入log库
fun xxx() {
...
LOGD("test log");
LOGD("return str=%s", "test");
...
}