我知道使用 proguard 您可以从发布版本中删除 java Log.d 调试语句 https://stackoverflow.com/a/13327603/1527440
但是有没有办法从 NDK C/C++ 代码中删除日志调试语句。
我正在使用定义语句在 NDK 中调用它们
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
我知道使用 proguard 您可以从发布版本中删除 java Log.d 调试语句 https://stackoverflow.com/a/13327603/1527440
但是有没有办法从 NDK C/C++ 代码中删除日志调试语句。
我正在使用定义语句在 NDK 中调用它们
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
使用NDEBUG
宏。或者你真的可以做#ifdef
任何事情。
#ifdef NDEBUG
#define LOGD(...)
#else
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
#endif
然后对于代码:
void f()
{
LOGD("About to do some stuff");
doSomeStuff();
}
编译器将看到(大致 -如果它们是宏ANDROID_LOG_DEBUG
,LOG_TAG
也将被替换为它们的值):
void f()
{
__android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,"About to do some stuff");
doSomeStuff();
}
何时NDEBUG
未定义并将看到:
void f()
{
;
doSomeStuff();
}
何时NDEBUG
定义。