Android NDK Native LIB, What to do about existing stdio?
Asked Answered
I

1

2

I have existing native C/C++ code that I am currently building into a native lib and Android app via the NDK. The native code is riddled with print statements to stdout and stderr. Is there a best practice for something like this? Can I just ignore them or do I need to go through and redirect them to the Android logging system?

I built the existing code as a standalone native binary and ran it via adb and I was seeing all the output from printf (to stdout) to the console.

Seems like a goofy question to ask but where does stdio go for an Android app?

Impure answered 10/10, 2011 at 23:31 Comment(0)
P
1

By default stdout and stderr are sent to /dev/null (nowhere) for android apps.

You can use adb setprop to set log.redirect-stdio to true, or put "log.redirect-stdio=true" in /data/local.prop (which you may need root access to create, but it's more reliable). Doing this will send their output to the logcat log.

See "Viewing stdout and stderr": http://developer.android.com/guide/developing/tools/adb.html

Paintbrush answered 11/10, 2011 at 2:6 Comment(3)
Note that the "Viewing stdout and stderr" section has moved to developer.android.com/tools/debugging/debugging-log.htmlOverstride
Note also that the comment on " Viewing stdout and stderr" says it's how the Dalvik VM works, and indeed the new ART reports a Unrecognized option -Xlog-stdio if you try this.Sunshinesunspot
This is Android issue 165602Sunshinesunspot

© 2022 - 2024 — McMap. All rights reserved.