使用 proguard 删除 Log 调用

问题描述 投票:0回答:3

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

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

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

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

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

android proguard
3个回答
99
投票

您不应指定“*”通配符,因为它包括“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 插件

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

资源


16
投票

已经很晚了,我也遇到了同样的问题。我正在使用 Android studio 1.3,这就是我所做的。

  1. proguard-android-optimize.txt
    中添加要在发布版本中删除的日志方法:

    -assumenosideeffects class android.util.Log {
        public static boolean isLoggable(java.lang.String, int);
        public static int d(...);
        public static int w(...);
        public static int v(...);
        public static int i(...);
    }
    
  2. 在你的build.gradle(模块:app)中将proguard-android-optimize.txt设置为默认的proguard文件而不是proguard-android.txt:

    buildTypes {
        release {
            minifyEnabled true
            debuggable false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt')
        }
    }
    

这是因为在

proguard-android.txt
中,默认情况下使用标志关闭优化

-dontoptimize
-dontpreverify 

这对我有用,希望对其他人有帮助。


7
投票

你需要这样做:

-assumenosideeffects class android.util.Log {
public static int d(...);
public static int v(...);
public static int i(...);
public static int w(...);
public static int e(...);
public static int wtf(...);
    }

并展开您正在使用的所有日志方法。

© www.soinside.com 2019 - 2024. All rights reserved.