我知道使用混淆器可以从发布版本中删除 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
被定义时。
关于android - NDK 如何在发布时删除 Log Debug 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17935474/