Android NDK printf 输出在哪里?

mas*_*boo 5 c c++ android android-ndk

我有以下代码 C++ 代码:

static void print_string(JNIEnv * env, jclass clazz, jstring str){
    jboolean isCopy;
    const char* utf_string;
    utf_string = env->GetStringUTFChars(str, &isCopy);

    env->ReleaseStringUTFChars(str, utf_string);
    //LOGI("%s",utf_string);
  //  LOGE("JNI Out = %s", utf_string);
    printf("jni out: %s",utf_string);
   __android_log_print(ANDROID_LOG_INFO, "MyTag", "The value is %s", utf_string);
    env->ReleaseStringUTFChars(str, utf_string);
}
Run Code Online (Sandbox Code Playgroud)

我在 logcat 中没有看到任何输出。那么它会去哪里呢?我怎样才能看到它?

agh*_*ini 4

根据文档,输出丢失:

默认情况下,Android 系统将stdoutand stderr(System.outSystem.err) 输出发送到/dev/null.

有一些方法可以更改它(在有 root 权限的设备上),例如使用setprop,取自文档:

$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start
Run Code Online (Sandbox Code Playgroud)