使用 ProGuard 在 Android 中删除 LibGDX 日志



我有一个proguard.cfg文件,其中包含几个语句,包括优化传递和日志抑制:

-assumenosideeffects class android.util.Log { *; }
-assumenosideeffects class com.badlogic.gdx.Application {
    public static void debug(...);
    public static void error(...);
    public static void log(...);
}

Log.*的调用将在最终输出 APK 文件中正确删除。但是 gdx 日志调用仍在代码中。例如,我仍然可以在输出中看到类似的东西:

Gdx.app.debug("debug()", "^");
Gdx.app.error("error()", "^");
Gdx.app.log("log()", "^");

我还尝试将配置的这一部分放在一个proguard-optimize.txt文件中,就像我在类似问题上看到的那样,然后在project.properties文件中设置正确的值,如下所示:proguard.config=proguard-optimize.txt:proguard.txt但它不起作用

只有当我放置一个通用通配符时,这些调用才会被删除:

-assumenosideeffects class com.badlogic.gdx.Application {
    *;
}

但我不想删除对其他Application静态方法的调用,例如add*get*()方法。

优化步骤已启用(6 次)。

Gdx.app.debug不是static它的实例方法(appGdx类的静态字段)。

尝试:

-assumenosideeffects class com.badlogic.gdx.Application {
    public void debug(...);
    public void error(...);
    public void log(...);
}

在应用程序的代码中尝试如下操作:

Gdx.app.setLogLevel(Application.LOG_NONE);

这将阻止记录消息。

干杯!

最新更新