Android JNI中记录log

本文介绍在Android JNI中封装log API的方法,通过封装可以简化日志记录操作,并提高代码的可维护性。文章详细展示了如何使用__android_log_write和__android_log_print函数,并提供了具体的封装实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android JNI中是有提供相关的接口来记录log的,这样的话,和java写的代码一样,可以直接在logcat中查看。如果代码里都是android提供的log api,一旦遇到新的需求,改起来会很麻烦,每个地方都需要修改,所以说封装android提供的log api是很有必要的。


====

android提供的常用api

__android_log_write(ANDROID_LOG_INFO, "tag here", "message here");
__android_log_print(ANDROID_LOG_INFO, "sometag", "test int = %d", testInt);


====

如何使用?

1. 包含头文件

#include <android/log.h>

2. 链接相关的库文件

android.mk需要加上引入库

LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog


====

封装

#include <stdio.h>
#include <stdarg.h>
#include <android/log.h>
#include <time.h>

static const char* TAG = "uninstall";

void kesyPrintf(const char *format, ...)
{
#ifdef KE_DEBUG
    char buf[2048] = "\0";
   
    va_list args;
    va_start(args,format);
    vsprintf(buf + strlen(buf), format, args);
    va_end(args);
    
     // 可以添加功能,在这里可以把log记录在文件中
     // -----

    __android_log_write(ANDROID_LOG_INFO, TAG, buf);
   
#endif
}

. KE_DEBUG是一个宏定义,作为一个开关,只有定义了KE_DEBUG,才会输出log。可以在代码中定义,也可以在mk文件中定义。

. 这样就可以像C语言中的printf那样打印log了

kesyPrint("Hello world\n");

kesyPrint("abc---%s", "efg");

-------------------欢迎评头品足-----by jacksonke


转载于:https://my.oschina.net/u/1445604/blog/495254

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值