【问题标题】:Is -keep class android.support.** { *; } Impacting Proguard optimization?是 -keep class android.support.** { *;影响 Proguard 优化?
【发布时间】:2018-04-13 11:58:40
【问题描述】:

为了使用 Proguard 运行我的应用程序,我需要将以下行添加到我的 Proguard.cfg

-keep class android.support.** { *; }

这是保持此类课程的常见做法吗?如果不是,这条线对 Proguard 优化的影响有多大?

【问题讨论】:

  • “为了使用 Proguard 运行我的应用程序,我需要添加以下行”,——不,你不需要 做这样的事情。没有它,现代支持库已经与 Proguard 兼容。事实上,使用这一行是一个明显的指标,表明您的 Proguard 配置不正确。
  • @user1643723 我正在运行最新版本的 Proguard(未修改)和最新版本的支持库。你建议我看什么配置?
  • 我建议的配置在stackoverflow.com/a/31508908/1643723 中描述。 TL; DR:与其将 Android 支持库列入黑名单,不如将它们列入白名单(与已知支持 Proguard 的其他库一起)。

标签: android proguard


【解决方案1】:

是的,这在为您的项目设置 proguard 规则时有些常见。这些库是您实际上不需要混淆的 SDK 材料。但是,您不需要混淆任何第三方库,除非它非常需要混淆它。因为在某些情况下,您不知道您正在使用的第三方库中的类的相互依赖关系。如果您真的必须混淆第三方库代码,那么请同时查看该库的 proguard-rules 规范。如果混淆第三方库,您可能会在应用程序中遇到 RuntimeException。

保留类对 proguard 优化没有任何影响。您只是在告诉 proguard,您希望将类保留在 com.android... 包中,而不会被混淆。

【讨论】:

  • 请注意,使用 keep 也会防止代码收缩。查看下面的链接以查看除“keep class”之外的各种可用指令。 jebware.com/blog/?p=418
【解决方案2】:

用这个程序添加:

-ignorewarnings -keep class * { public private *; }

这里这个程序用来忽略警告

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多