一、背景介绍
由于在 JNI 层没办法直接使用 Java 的类,当我们想要在 JNI 代码中输出一些 Android log 时,就需要通过 头文件的相关方法来打印 log。
一般我们开发会对这个 log 输出功能做一个简单的封装,便于控制和管理。
二、log.hpp 工具类
#ifndef LOG_HPP
#define LOG_HPP
#include <android/log.h>
#define TAG "FaceAPI"
static bool debug = true;
void setDebug(bool isDebug) {
debug = isDebug;
}
#define LOGV(...) if (debug) __android_log_print(ANDROID_LOG_VERBOSE,TAG ,__VA_ARGS__)
#define LOGD(...) if (debug) __android_log_print(ANDROID_LOG_DEBUG,TAG ,__VA_ARGS__)
#define LOGI(...) if (debug) __android_log_print(ANDROID_LOG_INFO,TAG ,__VA_ARGS__)
#define LOGW(...) if (debug) __android_log_print(ANDROID_LOG_WARN,TAG ,__VA_ARGS__)
#define LOGE(...) if (debug) __android_log_print(ANDROID_LOG_ERROR,TAG ,__VA_ARGS__)
#endif //LOG_HPP
这里添加了一个 debug 变量,可以动态的控制打开和关闭输出 log 的功能。
使用示例:
LOGD("num: %d", num);