Как включить / отключить собственный лог-код в ndk во время выполнения

Я использую этот код фрагмента, чтобы включить или выключить журнал

#define DEBUG 1 #if DEBUG #include <android/log.h> #define LOG_TAG "native_log" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) #else # define LOGD(...) do {} while (0) // do nothing #endif // use it LOGD("%s : %d","value", val); 

Он работал нормально, когда DEBUG флаг DEBUG . Проблема в том, что я хочу сделать это во время выполнения в java-стороне. Что я хочу так:

  // java private native void nativeSetDebug(boolean flag); // jni JNIEXPORT void JNICALL Java_com_my_package_Native_nativeSetDebug(JNIEnv *env, jobject thiz, jboolean flag){ // what should I do in this method? } 

Поскольку макросы в c ++ заменяются препроцессором их значением до того, как исходный файл даже компилируется, поэтому я ищу другой подход. Есть идеи?

Макрофайл

 extern bool useDebug; #include <android/log.h> #define LOG_TAG "native_log" #define LOGD(...) if(useDebug){__android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)} 

C-файл

 bool useDebug = true; JNIEXPORT void JNICALL Java_com_my_package_Native_nativeSetDebug(JNIEnv *env, jobject thiz, jboolean flag){ useDebug = flag; 

}

Экстерн важен, иначе каждый файл, включая заголовок, будет определять свою собственную переменную, и они не будут установлены правильно.

Intereting Posts
SQLite Exception нет такого столбца при попытке выбрать Android Чтение текстового файла С SDcard более 5 Мб ошибки Есть ли конвертер Java 7 на Java 6? Отправка трансляций из asynctasks Как перенаправить на окно настройки GPS в Android или ios, используя телефонную трубку для включения или выключения GPS Какова хорошая стратегия при работе с Proguard, MultiDex, Testing и Product Flavors? Новые объявления admob Express Native с ошибкой IllegalStateException Внутренний и внешний uri при получении данных из медиасторы Андроид: вопрос макета начальника Как узнать код зоны и идентификатор ячейки в телефоне android Как предоставить местоположение с AdRequest теперь, когда AdMob стала частью Службы Google Play? Как вы создаете и развертываете более старую версию Android для ионной / кордовой Автозаполнение SMS-сообщения в Phonegap / Cordova iOS и Android Запустите «Instant Run» из командной строки Отправлять значки прочь, когда expandig searchview в панели инструментов Android