【问题标题】:How to print log messages with in Android framework如何在 Android 框架中打印日志消息
【发布时间】:2011-11-29 08:08:49
【问题描述】:

我正在尝试在核心 Android 框架文件中打印日志消息。例如,我尝试在frameworks\base\media\libmediaplayerservice\ 下的MediaRecorderClient.cpp 中记录消息。我试过LOGVLOGELOGDprintf__android_log_print,都没有成功。

我应该使用哪个命令来打印日志消息?

【问题讨论】:

    标签: android java-native-interface logging native-code mediarecorder


    【解决方案1】:

    应该使用日志,但它会打印到 logcat 而不是系统打印。

    例子:

    Log.d("filter", example text); // filter is any tag you want to use as filter
    

    你可以在 eclipse 中从 window-show view -> other -> android -> logcat 打开 logcat

    【讨论】:

      【解决方案2】:

      您收到什么样的错误?如果它无法编译,请确保您已包含 ,也在 Android.mk 中:

      LOCAL_LDLIBS := -llog
      

      如果它编译但不产生任何输出,那么,就像@Warpzit 所说,你必须查看 logcat 才能看到你的消息。

      【讨论】:

      • 抱歉我最初的问题,但我应该使用哪个日志命令?我尝试使用 LOGE/LOGV/LOGD 查看 logcat,但我的任何消息都没有显示..
      • __android_log_print() 应该被使用。
      【解决方案3】:

      您似乎也只能将 char* 传递给 JNI LOG 方法。因此,如果调试字符串中有数字,则必须将它们放入 char 缓冲区(使用 sprintf)。

      【讨论】:

        【解决方案4】:

        /system/core/include/cutils/log.h 定义了用于登录 Android 框架的宏。

        因此,您取消注释源文件顶部的 #define LOG_NDEBUG 0 行,它将启用 VERBOSE 日志记录。您需要重新编译整个库并将其放入您的 android system.img 构建中。

        我相信宏调用是 ALOGV、ALOGE 等等。

        这与其他答案类似:

        How to get Verbose logging in logcat for a specific module

        【讨论】:

          【解决方案5】:

          首先声明字符串

          Private String Tag = getClass().getsimplename();
          

          比你的方法

           Log.d(Tag,"This is my oncreate method");
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-09-08
            • 2021-07-31
            • 2020-04-10
            • 1970-01-01
            • 2012-09-20
            • 1970-01-01
            • 2014-10-23
            相关资源
            最近更新 更多