赞
踩
链接:https://pan.baidu.com/s/1S605af7NXzBSM9vhTc_f0w
提取码:91rv
Demo 里的 local.properties 的 NDK 路径记得修改。
ndk.dir=G\:\\android-ndk-r10(=号后面为ndk的解压路径)
其实就是靠这个(liblog.so)so库打印日志
配置 Android.mk文件 输入 LOCAL_LDLIBS := -llog 打印日志库
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_LDLIBS := -llog
LOCAL_MODULE := ccalljava
LOCAL_SRC_FILES := CCallJava.c
include $(BUILD_SHARED_LIBRARY)
#include <android/log.h>
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, "========= Info ========= ", __VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, "========= Error ========= ", __VA_ARGS__)
#define LOGD(...) __android_log_print(ANDROID_LOG_INFO, "========= Debug ========= ", __VA_ARGS__)
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN, "========= Warn ========= ", __VA_ARGS__)
LOGD("DEBUG");
LOGE("ERROR");
LOGI("INFO");
LOGW("WARN");
在代码中要打印日志就要定义出来
3. 包含日志头文件, 定义日志输出函数
#include <android/log.h>
#define LOG_TAG "atlinweimao"
#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 LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
调用 __android_log_print 这个方法打印日志
__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, VA_ARGS)
第一个参数为日志的等级
第二个参数为 TAG:标志
第三个参数为__VA_ARGS__:可变参数
public native void printLog(int logLevel, String logString);
extern "C" JNIEXPORT void JNICALL Java_com_example_hasee_ndkdemo_NDKUtil_printLog( JNIEnv *env, jobject /*this*/, jint logLevel, jstring logString){ //jstring类型的方法需要先转为char类型 const char* str = (*env)->GetStringUTFChars(env,logString,0); //根据不同的打印等级打印不同的信息 switch (logLevel){ case 1: LOGD("DEBUG———— %s",str); break; case 2: LOGW("WARN———— %s",str); break; case 3: LOGI("INFO———— %s",str); break; case 4: LOGE("ERROR———— %s",str); break; default: LOGI("INFO———— %s",str); } //要记得释放str所占用的内存空间 (*env)->ReleaseStringUTFChars(env,logString,str);
//日志打印等级
public static final int LOG_DEBUG = 1;
public static final int LOG_ERROR = 2;
public static final int LOG_WARN = 3;
public static final int LOG_INFO= 4;
jniTest.printLog(LOG_DEBUG, " Debug 级日志信息打印测试");
jniTest.printLog(LOG_ERROR, " Error 级日志信息打印测试");
jniTest.printLog(LOG_WARN, " Warn 级日志信息打印测试");
jniTest.printLog(LOG_INFO, " Info 级日志信息打印测试");
修正代码并转载:https://blog.csdn.net/Xiongjiayo/article/details/85758203
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。