Android 系统下的log文件【转载】

Android系统中的log都有那些,如何在JNI或者自己在Android系统下开发的程序中打印Log

前言

Android 系统中的Log分为两类,一种是java层的, 一种是Native层的,

Java层的Log

Log.d
Log.e
Log.v
Log.i

在此不做过多赘述, 最终还是通过jni调到系统的

Native层的Log, 一般JNI就是通过这种方式调用的

__android_log_print方式

复制代码
1.源码位置,系统编译出liblog库
/system/core/liblog/include/android/log.h

2.在mk文件里面引用这个库文件
LOCAL_SHARED_LIBRARIES := \
	liblog
或者在bp文件中引入这个库:
shared_libs: ["liblog"],

3.在c或者c++代码中引用 #include <android/log.h>

ANDROID_LOG_DEBUG log.h文件里面定义的枚举,可以直接用,
__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
__VA_ARGS__  这个是可变参数接收的类型

__android_log_print(ANDROID_LOG_DEBUG, "skyxiao", "test");
一般定义一个宏来表示可变参数,这个可以自己上网搜下,很简单的

Copy

SLOGD的方式

复制代码
1.源码位置,系统编译出libcutils库文件
/system/core/include/log/log_system.h
2.引入头文件
#include <cutils/log.h>
3.SLOGD("xxxxx");

Copy

ALOGE的方式

复制代码
定义宏
#define LOG_TAG "test"
为什么要这样定义?
参考源码:第二个参数是LOG_TAG 也可以不用定义
#ifndef ALOGE
242#define ALOGE(...) ((void)ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))

#### 第一种方式:
上面的两种方式引入的库和头文件之后,可以直接用
ALOGE("xxxxx");
#### 第二种方式:
#include <utils/Log.h>
mk中添加
LOCAL_SHARED_LIBRARIES:= libcutils libutils liblog
ALOGE("xxxxx");
ALOGE("%s(), %d",__FUNCTION__,__LINE__);
可参考这个链接
<https://blog.csdn.net/u010164190/article/details/78659503>
相关推荐
用户093 小时前
Flutter构建速度深度优化指南
android·flutter·ios
PenguinLetsGo3 小时前
关于「幽灵调用」一事第三弹:完结?
android
雨白7 小时前
Android 多线程:理解 Handler 与 Looper 机制
android
sweetying9 小时前
30了,人生按部就班
android·程序员
用户20187928316710 小时前
Binder驱动缓冲区的工作机制答疑
android
真夜10 小时前
关于rngh手势与Slider组件手势与事件冲突解决问题记录
android·javascript·app
用户20187928316710 小时前
浅析Binder通信的三种调用方式
android
用户0910 小时前
深入了解 Android 16KB内存页面
android·kotlin
火车叼位11 小时前
Android Studio与命令行Gradle表现不一致问题分析
android
前行的小黑炭13 小时前
【Android】 Context使用不当,存在内存泄漏,语言不生效等等
android·kotlin·app