ProGuard 优化通过了在 Android Studio 3.4.1 中突然生成构建时跳过的 5 条规则

Posted

技术标签:

【中文标题】ProGuard 优化通过了在 Android Studio 3.4.1 中突然生成构建时跳过的 5 条规则【英文标题】:ProGuard optimization passes 5 rule skipped on generating build in Android studio 3.4.1 suddenly 【发布时间】:2020-02-19 13:58:07 【问题描述】:

Proguard 优化通道 5 工作正常,构建完成了所有五个级别的通道(请参阅下面的日志),但是 Gradle 突然跳过(没有任何警告)ProGuard 优化通道(日志如下所示)

环境由 android Studio 3.4.1、Gradle 插件 3.4.1 和 ProGuard 6.0.3 组成。 R8 在 gradle.properties 中被禁用,而 useProguard 在 app 模块 build.gradle 中被启用。应用在 Java 平台上。

尝试了其他 SO 帖子中建议的以下选项(与 ProGuard 优化无关),但没有成功。 删除 .gradle 文件夹。 Android Studio 中的缓存无效 尝试将 Gradle 插件更改为 3.3.1

Working Proguard 优化 Gradle 日志

Shrinking... 
Printing usage to ... 
Removing unused program classes and class elements...
  Original number of program classes: 7098
  Final number of program classes:    5859
Optimizing (pass 1/5)...
Optimizing (pass 2/5)...
Optimizing (pass 3/5)...
Optimizing (pass 4/5)...
Optimizing (pass 5/5)...
Shrinking...
Removing unused program classes and class elements...
  Original number of program classes: 5815
  Final number of program classes:    5815
Obfuscating...

跳过优化 Gradle 日志

Shrinking...
Printing usage to ...
Removing unused program classes and class elements...
  Original number of program classes: 7415
  Final number of program classes:    6151
Obfuscating...

尝试通过禁用 R8 将 Android Studio 升级到 3.5 版本,但同样的问题仍然存在。甚至在多台机器上都尝试过。

没有针对此类问题的 SO 帖子。请协助。

【问题讨论】:

【参考方案1】:

为我找到了解决方案 -

在 build.gradle 我更改了这一行:

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

到这里:

proguardFiles 'proguard-rules.pro'

即取出 proguard-android.txt 部分。这是基于this answer 声明的

如果不想优化,请使用 proguard-android.txt 配置文件而不是这个,它会关闭 优化标志

不确定是不是你拥有的,但值得一试。另外,我会确保您了解您使用的是 R8(新的缩小器)还是实际上正在快速过渡的 Proguard

干杯!

【讨论】:

以上是关于ProGuard 优化通过了在 Android Studio 3.4.1 中突然生成构建时跳过的 5 条规则的主要内容,如果未能解决你的问题,请参考以下文章

Android:proguard 不会混淆源代码

在 Android Studio 中分析 Proguard 优化构建的最佳方式?

如何在 xamarin 表单中使用 proguard 优化器工具

在 ProGuard 优化期间删除未使用的字符串

在 ProGuard 优化期间删除未使用的字符串

Proguard 和 R8 没有优化我的库代码