JNI-C/C++配置Log打印日志

         在JNI开发过程中,C/C++函数有时需要打印一些信息,特别是在调试时;

         此篇主要讲解C/C++中的Log配置;

1. 项目添加C/C++通用库

2. Android.mk添加log库

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := NDKLogDemo
LOCAL_SRC_FILES := NDKLogDemo.cpp
LOCAL_LDLIBS := -lm -llog
include $(BUILD_SHARED_LIBRARY)

3. 引用Log头文件

    c/cpp文件引用Log头文件

#include <android/log.h>

4. 定义Log的Tag变量

 #define LOG_TAG "jnidemo"   

5. 定义LOG函数

// 定义debug信息
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
// 定义error信息
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
// 定义info信息
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)

6. 使用LOG函数

LOGI("%s", char *str); 
第一个参数:字符串的格式符;

第二个参数:必须是一个char指针;

如果第二个参数为jstring类型的 jstr,打印需要通过GetStringUTFChars(jstr, 0)函数把jstring指针转化为UTF-8格式C字符串;


C/C++LOG配置的案例:

#include <jni.h>
#include <android/log.h>
#include "com_niubashaoye_ndk_log_jni_JNITools.h"

#define LOG_TAG "jnidemo"

// 定义debug信息
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
// 定义error信息
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
// 定义info信息
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)

/*
 * Class:     com_niubashaoye_ndk_log_jni_JNITools
 * Method:    testLog
 * Signature: (Ljava/lang/String;)V
 */
JNIEXPORT void JNICALL Java_com_niubashaoye_ndk_log_jni_JNITools_testLog(
		JNIEnv *env, jobject obj, jstring str) {
	//如果需要打印使用GetStringUTFChars()把jstring指针转换为C的字符串;
	const char *locstr = env->GetStringUTFChars(str, 0);
	LOGI("JNI的C/C++配置Log打印日志信息:%s", locstr);
}

C/C++配置Log案例代码:https://download.csdn.net/download/niuba123456/10533463

                  

猜你喜欢

转载自blog.csdn.net/niuba123456/article/details/80991477
今日推荐