android - 使用 proguard 删除日志调用

标签 android proguard

我正在尝试使用 proguard 来删除我的所有日​​志: 我在 proguard-project.txt 中输入了以下行:

-assumenosideeffects class android.util.Log { *; }

我的 project.properties 看起来像这样:

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

尽管如此,日志继续显示在我的应用程序中。我到底做错了什么?

最佳答案

您不应该指定“*”通配符,因为它包括像“Object#wait()”这样的方法。最好明确列出方法:

-assumenosideeffects class android.util.Log {
    public static boolean isLoggable(java.lang.String, int);
    public static int v(...);
    public static int i(...);
    public static int w(...);
    public static int d(...);
    public static int e(...);
}

此选项仅在优化未被禁用时才相关,例如在 proguard-android.txt 中。您必须改为指定 proguard-android-optimize.txt:

proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt

或与当代 Android Gradle plugin

buildTypes {
    releaseSomeBuildType {
        ...
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'your-proguard-file.pro'
    }
}   

关于android - 使用 proguard 删除日志调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13218772/

相关文章:

android - android 中的一个又一个 fragment

带分隔符的 Android GridView

java - 迁移到 Gradle 后无法在代码中获取版本名称

android - 在 Android Spinner 中更改所选项目的背景颜色

java - 可以让 Android 应用程序中的所有 Activity 共享一个 SQLiteOpenHelper 实例吗?

java - Proguard with AWS (amazon service sdk) reutrn 错误代码 1

android - App 在 Debug 模式下工作,但在 Release 模式下不工作

java - Android - twitter4j Proguard 错误

android - Proguard 每次都与 gradle 一起运行;结果未重复使用

android - 找不到库 "libmaliinstr.so"