Proguard:忽略库中的Proguard错误

4

我正在优化我的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关键字中)

感谢您的回答。

1个回答

0

我终于找到了关于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,如果可以,请向它们发出拉取请求,或者联系库作者进行演进。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接