Android NDK Native LIB, что делать с существующим stdio?

У меня есть собственный код C/C++, который я в настоящее время встраиваю в собственную библиотеку и приложение для Android через NDK. Собственный код пронизан операторами печати на stdout и stderr. Есть ли лучшая практика для чего-то подобного? Могу ли я просто игнорировать их или мне нужно пройти и перенаправить их в систему ведения журнала Android?

Я создал существующий код как отдельный собственный двоичный файл и запустил его через adb, и я видел весь вывод из printf (в стандартный вывод) на консоль.

Кажется, глупый вопрос, но куда девать stdio для Android-приложения?


person ColonelPackage    schedule 10.10.2011    source источник


Ответы (1)


По умолчанию stdout и stderr отправляются в /dev/null (никуда) для приложений Android.

Вы можете использовать adb setprop, чтобы установить для log.redirect-stdio значение true, или поместить «log.redirect-stdio=true» в /data/local.prop (для создания которого вам может потребоваться root-доступ, но это более надежно). Это отправит их вывод в журнал logcat.

См. «Просмотр stdout и stderr»: http://developer.android.com/guide/developing/tools/adb.html

person Crate    schedule 11.10.2011
comment
Обратите внимание, что раздел «Просмотр stdout и stderr» перемещен на developer.android.com/tools. /debugging/debugging-log.html - person Josh Heitzman; 25.11.2012
comment
Также обратите внимание, что в комментарии к просмотру stdout и stderr говорится, что именно так работает виртуальная машина Dalvik, и действительно, новый ART сообщает Unrecognized option -Xlog-stdio, если вы попробуете это. - person MSalters; 15.06.2015
comment
Это проблема Android 165602. - person MSalters; 17.06.2015