我正在优化我的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关键字中)
谢谢你的回答。
我终于找到了关于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
,如果可以的话,你别无选择向他们提出请求,或者如果你能联系图书馆作者,可以要求进化。