我正在尝试在核心 Android 框架文件中打印日志消息。例如,我尝试MediaRecorderClient.cpp
在frameworks\base\media\libmediaplayerservice\
. 我试过LOGV
, LOGE
, LOGD
,printf
和__android_log_print
, 没有任何成功。
我应该使用哪个命令来打印日志消息?
我正在尝试在核心 Android 框架文件中打印日志消息。例如,我尝试MediaRecorderClient.cpp
在frameworks\base\media\libmediaplayerservice\
. 我试过LOGV
, LOGE
, LOGD
,printf
和__android_log_print
, 没有任何成功。
我应该使用哪个命令来打印日志消息?
应该使用日志,但它会打印到 logcat 而不是系统打印。
例子:
Log.d("filter", example text); // filter is any tag you want to use as filter
您可以在 Eclipse 中从 window-show view -> other -> android -> logcat 打开 logcat
你收到什么样的错误?如果它没有编译,请确保你已经包含了 <android/log.h>,也在 Android.mk 中:
LOCAL_LDLIBS := -llog
如果它编译但不产生任何输出,那么就像@Warpzit 所说,你必须查看 logcat 才能看到你的消息。
您似乎也只能将 char* 传递给 JNI LOG 方法。因此,如果调试字符串中有数字,则必须将它们放入 char 缓冲区(使用 sprintf)。
/system/core/include/cutils/log.h
定义用于登录 Android 框架的宏。
因此,您取消注释#define LOG_NDEBUG 0
源文件顶部的行,它将启用 VERBOSE 日志记录。您将需要重新编译整个库并将其放入您的 android system.img 构建中。
我相信宏调用是 ALOGV、ALOGE 等。
这与其他答案类似:
首先声明字符串
Private String Tag = getClass().getsimplename();
而不是你的方法
Log.d(Tag,"This is my oncreate method");