Android 调试动态(静态)链接库打印日志

461 阅读1分钟

最近在工作中中需要在Android集成鉴权库的静态链接库,而在集成过程中遇到了一些问题,所以需要在Android Studio中打印静态链接库中的日志进行问题定位,特此记录便于日后查阅。

首先我们需要修改Android.mk文件配置,添加如下语句:

    LOCAL_LDLIBS := -llog

然后我们在要使用LOG的.cpp文件中加入以下内容:

#include <android/log.h>
#define LOGD(fmt, args...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, fmt, ##args)

如果想改变输出等级,以相应颜色标示进行日志区分,可以通过以下方式进行定义:

#define LOG_TAG "debug"
#define LOGI(fmt, args...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, fmt, ##args)
#define LOGD(fmt, args...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, fmt, ##args)
#define LOGE(fmt, args...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, fmt, ##args)

在要打印log的地方,通过以下方式进行打印:

LOGI("这是用JNI打出来的日志。\n")
LOGI("the string is: %s \n", num);

在logcat端看到的输出是:

07-25 15:38:43.928: D/LOG_TAG(30564): 这是用JNI打出来的日志。
07-25 15:38:44.928: D/LOG_TAG(30564): the string is: 1

另外,有文章称此方法在编译动态库的时候可能会出问题,会提示cannot find -llog的错误。意思是找不到liblog.so这个库文件。因此需要改成 LOCAL_LDLIBS:= -L$(SYSROOT)/usr/lib -llog 才可以正常编译。但是我这边编译动态库的时候,好像不用这样改也行,没发现编译时提示“cannot find -llog”的错误,但也在此将方法记录下来。