logcat能否用于记录Android中的NDK代码?或者说有哪些来自NDK的记录选项?

18

如何在安卓(NDK)的本地代码中编写日志?有哪些可用选项?例如,能否从NDK内部使用logcat编写日志?还是因为它更高级在安卓中,无法从NDK访问它?

目前我只知道使用以下C代码编写时间:

millis = System.currentTimeMillis();

并使用函数将此时间以及任何消息写入自定义日志文件。


1
可能是如何调试Android NDK代码的简单或易用方法?的重复问题。 - auselen
1
您也可以参考以下链接:http://android-harvest.blogspot.com/2011/06/logging-in-native-code-of-android.html。 - rupesh jain
相关的内容:https://dev59.com/n2ct5IYBdhLWcg3wWMFF - Ciro Santilli OurBigBook.com
可能是从Android JNI程序调用Log API是什么?的重复。 - Ciro Santilli OurBigBook.com
2个回答

42

你可以使用Android日志记录

#include <android/log.h>

#define APPNAME "MyApp"

__android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "My Log");

同样,请确保在您的 Android.mk 文件中链接日志记录库:
LOCAL_LDLIBS := -llog

这个问题已经在有没有在Android NDK代码中打log的简单方法?中讨论过。


23

如果您使用较新的 Android Studio 版本 (2.2+),它使用 CMake,则在使用 C++ 支持生成新项目时将自动将以下内容添加到您的 CMakeLists.txt 文件中:

find_library( # Sets the name of the path variable.
          log-lib

          # Specifies the name of the NDK library that
          # you want CMake to locate.
          log )

target_link_libraries( # Specifies the target library.
                   your-lib1
                   your-lib2
                   ...

                   # Links the target library to the log library
                   # included in the NDK.
                   ${log-lib} )

2
我找到的唯一最新的答案,谢谢!小提示:将每个“目标库”放在单独的“target_link_libraries”块中。 - Taras Mykhalchuk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接