में लॉककैट को रीडायरेक्ट करने के लिए रीडायरेक्ट करें, मुझे मूल नेडआउट संदेश को लॉगकैट पर रीडायरेक्ट करने के लिए अपना Nexus S (Android 4.0 चला रहा है) नहीं मिल सकता है। मैंने पढ़ा है कि मुझे यह करने की ज़रूरत है:एंड्रॉइड एनडीके
$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start
हालांकि, यह काम नहीं प्रतीत होता है। (यह JUnit तोड़ने हालांकि, के रूप में उल्लेख here करता है, तो यह प्रभाव के बिना नहीं है।)
संदर्भ के लिए, मेरे कोड है:
package com.mayastudios;
import android.util.Log;
public class JniTester {
public static void test() {
Log.e("---------", "Start of test");
System.err.println("This message comes from Java.");
void printCMessage();
Log.e("---------", "End of test");
}
private static native int printCMessage();
static {
System.loadLibrary("jni_test");
}
}
और JNI ग फ़ाइल:
JNIEXPORT void JNICALL
Java_com_mayastudios_JniTester_printCMessage(JNIEnv *env, jclass cls) {
setvbuf(stdout, NULL, _IONBF, 0);
printf("This message comes from C (JNI).\n");
fflush(stdout);
//setvbuf(stderr, NULL, _IONBF, 0);
//fprintf(stderr, "This message comes from C (JNI).\n");
//fflush(stderr);
}
और Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := jni_test
LOCAL_SRC_FILES := test_jni.c
include $(BUILD_SHARED_LIBRARY)
मैं सिर्फको फोन करके इस संकलन कर रहा हूँ। देशी विधि को सही ढंग से बुलाया जाता है लेकिन मुझे इससे कोई लॉग आउटपुट नहीं मिलता है (यहां तक कि वर्बोज़ पर भी)। मुझे जावा से लॉग आउटपुट मिलता है हालांकि ("यह संदेश जावा से आता है।")।
कोई संकेत जो मैं गलत कर रहा हूं?
पुनश्च: https://bitbucket.org/skrysmanski/android-ndk-log-output/
इस questino में मेरा उत्तर की जाँच करें - http : //stackoverflow.com/questions/10274920/how-to-get-printf-messgaes-written-in-ndk-application/10275209#10275209 – Shaiful
मुझे इस समाधान के बारे में पता है (और यही वह है जो मैंने उपयोग किया है)। हालांकि, मूल प्रश्न अभी भी बनी हुई है। शायद यह सिर्फ एक बग है। –
क्या आपने setvbuf कॉल को हटाने का प्रयास किया है? मेरे पास fflush द्वारा कोड में सही ढंग से लॉग में दिखाए गए printf द्वारा निर्धारित किया गया है जो setvbuf का उपयोग नहीं करता है। –