【问题标题】:Proguard : ignore library proguard errorsProguard : 忽略库 proguard 错误
【发布时间】:2017-05-03 15:02:00
【问题描述】:

我正在优化我的 proguard 配置,但我仍然保留了一些非强制性的类名。

经过深入思考,我终于找到了原因。 我的班级实现了Parcelable,并且我使用了一些使用此 proguard 配置的库:

# Needed for Parcelable/SafeParcelable Creators to not get stripped
-keepnames class * implements android.os.Parcelable {
    public static final ** CREATOR;
}

这似乎是保留类的名称和CREATOR 字段。 我认为只需要CREATOR 字段,因为可以在官方proguard-android-optimize.txt proguard 文件中读取:

-keepclassmembers class * implements android.os.Parcelable {
    public static final ** CREATOR;
}

由于我不是图书馆的所有者,我无法更改它。有没有办法覆盖他们的 proguard 配置文件? (可能包含在consumerProguardFiles gradle 关键字中)

感谢您的回答。

【问题讨论】:

    标签: android proguard obfuscation android-proguard


    【解决方案1】:

    我终于找到了关于proguard-android-optimize.txt的解决方案。

    在 AndroidStudio 中,您可以访问 proguard-android-optimize.txt(在 mac 上为 ⌘↑O,在 windows/linux 上为 control + shift + N)。只需复制文件内容,并将其粘贴到您的项目中,而无需删除您要删除的规则。最后将其用作您自己的 proguardFiles。

    替换

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

    与

    proguardFiles 'proguard-android-optimize.txt', 'proguard-rules.pro'

    请注意,风险自负,并且您不会从最新的嵌入式 proguard 文件中获得优化。

    关于consumerProguardFiles,如果可以的话,你别无选择向他们提出拉取请求,或者如果你可以联系图书馆作者,则要求改进。

    【讨论】:

      猜你喜欢
      • 2013-11-02
      • 2013-03-12
      • 2015-01-14
      • 2011-12-05
      • 2015-09-16
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      • 2017-03-04
      相关资源
      最近更新 更多