小编Isn*_*god的帖子

如何通过JNI/NDK获取Android应用程序中使用的c ++库的日志行(printf,cout等)的控制台输出

在我的Android应用程序中,我通过JNI使用本机c ++库.如果它以调试模式构建,则此库会生成日志行.我想将日志行重定向到logcat.

所以我在调试模式下创建了lib, NDK_DEBUG=1使用并 LOCAL_LDLIBS += -llog设置了.

我的设备没有root,但我设置:

$ adb shell stop $ adb shell setprop log.redirect-stdio true $ adb shell start

就像它在http://developer.android.com/tools/debugging/debugging-log.html#viewingStd中描述的那样,这里的"std :: cout"可用于Android-ndk

使用__android_log_print(ANDROID_LOG_INFO, "foo", "Error: %s", foobar);正在工作,但它不是我的选项,因为c ++ lib也用于iOS应用程序,所以我不想更改本机代码.

我还尝试使用此设置获取在JNI包装器中创建的控制台输出(printf),但除了"__android_log_print"语句之外,输出也不会对logcat造成影响.

我是否错过了某些内容,或者重定向是否仅适用于root设备?

如何获取本机代码生成的控制台输出.

先感谢您

c++ console java-native-interface logging android-ndk

7
推荐指数
2
解决办法
6258
查看次数