0
たとえば、dalvik/vm/native/dalvik_system_DexFile.cppにALOGI(「ログがあります」)という機能があり、このログをlogcatまたはDDMSで表示したいとします。Android C++ファイルでALOGI(...)をどのように印刷しますか?
どうすればいいですか?具体的にしてください。ありがとう。
たとえば、dalvik/vm/native/dalvik_system_DexFile.cppにALOGI(「ログがあります」)という機能があり、このログをlogcatまたはDDMSで表示したいとします。Android C++ファイルでALOGI(...)をどのように印刷しますか?
どうすればいいですか?具体的にしてください。ありがとう。
ログを印刷する最もよい方法は、このタスクにクロスプラットフォームのクロスプラットフォームを作成することです。例では、次のようlogger.hで:あなたのソースで
#pragma once
#define TMB_DEBUG_LOGS 1
#ifdef TMB_DEBUG_LOGS
// YES LOGS
# ifdef ANDROID
// LOGS ANDROID
# include <android/log.h>
# define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG,__VA_ARGS__)
# define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , LOG_TAG,__VA_ARGS__)
# define LOGI(...) __android_log_print(ANDROID_LOG_INFO , LOG_TAG,__VA_ARGS__)
# define LOGW(...) __android_log_print(ANDROID_LOG_WARN , LOG_TAG,__VA_ARGS__)
# define LOGE(...) __android_log_print(ANDROID_LOG_ERROR , LOG_TAG,__VA_ARGS__)
# else
// LOGS NO ANDROID (fprintf)
#include <stdio.h>
#include <time.h>
//Warning, multithreading problem in logs with this solution!
static char buff[100];
static struct tm *sTm;
static time_t now;
# define PRINT_TIME {now = time(0); sTm = localtime(&now); strftime(buff, sizeof(buff), "[%Y-%m-%d %H:%M:%M]", sTm); fprintf(stderr, "%s ", buff); }
# define LOGV(...) {PRINT_TIME fprintf(stderr, "[V][%s] ", LOG_TAG); fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n");}
# define LOGD(...) {PRINT_TIME fprintf(stderr, "[D][%s] ", LOG_TAG); fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n");}
# define LOGI(...) {PRINT_TIME fprintf(stderr, "[I][%s] ", LOG_TAG); fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n");}
# define LOGW(...) {PRINT_TIME fprintf(stderr, "[W][%s] ", LOG_TAG); fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n");}
# define LOGE(...) {PRINT_TIME fprintf(stderr, "[E][%s] ", LOG_TAG); fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n");}
# endif // ANDROID
#else
// NO LOGS
# define LOGV(...)
# define LOGD(...)
# define LOGI(...)
# define LOGW(...)
# define LOGE(...)
#endif // TMB_DEBUG_LOGS
、一例では、main.cの
//... your includes
#define LOG_TAG "MainProgram"
#include "logger.h"
main()
{
// My code
LOGI("The program is creating a info log");
LOGD("My foo: %d", foo_variable);
}
は、あなた自身のAndroid ROMを構築していますか?そうでなければ、Dalvikが記録するものを変更できるかどうかはわかりません。独自のROMを構築している場合は、該当するAndroid.mkファイル内の関連モジュールのCFLAGSを修正してみてください。たとえば、 '-UNDEBUG -DDEBUG = 1 -DLOG_NDEBUG = 1'を追加します。 – Michael