android-如何在jni中C/C++层打印log到logcat

最近在做android jni的开发,需要输出一些log方便调试分析问题,但是jni层里不能像纯android开发一样直接Log.v("xxx",xxx) ,而使用C中常用的printf也不起作用。下面将在网上找到的方法,经过验证整理出来。

在jni的C++层打印log信息的步骤

  • 1.在Android.mk文件中加入:LOCAL_LDLIBS := -llog
  • 2.在要使用LOG的cpp文件中加入:
    #include <android/log.h>
  • 3.直接使用__android_log_print函数, 代码举例:
char * name = "mronion";
__android_log_print(ANDROID_LOG_INFO, "lclclc", "my name is %s\n", name); //log i类型

如下图可以在logcat上看到输出结果:my name is mronion

改进

直接使用__android_log_print太麻烦了,我们可以定义一些log的方法,上述第二步改为:

#include <android/log.h>
#define TAG "projectname" // 这个是自定义的LOG的标识   
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,TAG ,__VA_ARGS__) // 定义LOGD类型   
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG ,__VA_ARGS__) // 定义LOGI类型   
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,TAG ,__VA_ARGS__) // 定义LOGW类型   
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG ,__VA_ARGS__) // 定义LOGE类型   
#define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,TAG ,__VA_ARGS__) // 定义LOGF类型 

使用举例:

char * name = "mronion";
LOGD("my name is %s\n", name );  

该写法就类似于平时android开发时打log的写法,是不是亲切很多。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值