使用proguard删除日志调用

时间:2012-11-04 13:07:00

标签: 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

尽管如此,日志仍继续显示在我的申请中。我到底错在了什么?

3 个答案:

答案 0 :(得分:89)

您不应指定'*'通配符,因为它包含'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'
    }
}   

答案 1 :(得分:12)

现在已经很晚了,我遇到了同样的问题。我正在使用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(Module:app)中将proguard-android-optimize.txt设置为默认的proguard文件而不是proguard-android.txt:

    buildTypes {
        release {
            minifyEnabled true
            debuggable false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt')
        }
    }
    
  3. 这是因为proguard-android.txt默认情况下使用标志

    关闭优化
    -dontoptimize
    -dontpreverify 
    

    这对我有用,希望它能帮助别人。

答案 2 :(得分:6)

你需要这样做:

-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(...);
    }

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