我知道您可以使用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_DEBUGLOG_TAG大约也会被替换为它们的值):
void f()
{
    __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,"About to do some stuff");
    doSomeStuff();
}

未定义NDEBUG时,将显示:
void f()
{
    ;
    doSomeStuff();
}

当定义了NDEBUG时。

09-12 17:46