Javaファイルでそのような関数を定義している場合
/**
* Adds two integers, returning their sum
*/
public native int add( int v1, int v2 );
だから私はCファイルでコーディングする必要があります
JNIEXPORT jint JNICALL Java_com_marakana_NativeLib_add
(JNIEnv * env, jobject obj, jint value1, jint value2) {
printf("\n this is log messge \n");
return (value1 + value2);
}
次に、このprintfがどこからメッセージを出力しますか?
logcate でわかりませんか?
ログメッセージを出力して NDK アプリケーションをデバッグするにはどうすればよいですか?
答え:
__android_log_print()
を使用 代わりは。ヘッダー <android/log.h>
を含める必要があります
サンプル例。 __android_log_print(ANDROID_LOG_DEBUG, "LOG_TAG", "\n this is log messge \n");
printf のような書式指定子を使用することもできます -
__android_log_print(ANDROID_LOG_DEBUG, "LOG_TAG", "Need to print : %d %s",int_var, str_var);
Android.mk ファイルで、ログ ライブラリにもリンクしていることを確認してください。
LOCAL_LDLIBS := -llog
ああ..忘れた..出力は Logcat
に表示されます タグ LOG_TAG
付き
簡単なアプローチ
次の行を共通ヘッダー ファイルに追加します。
#include <android/log.h>
#define LOG_TAG "your-log-tag"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
// If you want you can add other log definition for info, warning etc
LOGD("Hello world") or LOGE("Number = %d", any_int)
を呼び出すだけです printf in c
のように .
共通ヘッダー ファイルを含めることを忘れないでください。
ログを削除
LOGD(...)
を定義すると 空の場合、すべてのログがなくなります。 LOGD(...)
の後にコメントするだけです .
#define LOGD(...) // __android_log..... rest of the code