【Android NDK】(二)打印日志

1,707 阅读1分钟

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");
    ...
}