我知道您可以使用Proguard从发行版本中删除Java Log.d调试语句
https://stackoverflow.com/a/13327603/1527440
但是有办法从NDK C/C++代码中删除日志调试语句。
我正在使用define语句在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
时。