ProGuard 显然不会 运行

ProGuard obviously does not run

我尝试用混淆器做一些代码优化,但直到现在都没有成功。 SO 上类似问题的所有答案都没有帮助我,google 提供的有关混淆器的文档也不是很有帮助。

我做了什么:

我的 build.gradle 在应用程序级别有以下内容:

buildTypes {
    debug {
        testCoverageEnabled = true
        debuggable true
    }
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
    debuggable.initWith(buildTypes.debug)
    debuggable {
        testCoverageEnabled = false
        debuggable true
    }
}

在我的 proguard-rules.pro 我添加了这个:

-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-optimize.txt 文件中的任何内容。

现在,当我构建一个签名版本的 apk (Android Studio 3.0) 时,反编译结果显示我的代码没有任何变化,并且没有可见的 proguard 输出(不在 app/build/intermediates-folder而不是在 gradle 控制台中)。我确定我遗漏了一些非常简单的东西,但我无法弄明白。

我还需要配置什么才能获得 proguard 运行?

好吧,看来我一直是不记得的受害者"Did you try to turn it off and on again?"

今天我启动了我的机器,打开了 Android Studio,一切都很顺利。看起来 Android Studio、Gradle、ProGuard 等等缓存了一些东西,所以我之前的错误尝试让所有东西都处于不稳定状态,没有任何效果。

因此,如果任何人有类似的设置(Android Studio 3.0 和 Gradle 4.1),具有如上所述的确切配置并且事情不起作用:

"Try to turn it off and on again".

:-)

(不仅仅是 Android Studio,因为这是我昨天所做的但没有成功。)