在混淆时我是不是需要在 proguard 规则中“保持” Parcelable
Posted
技术标签:
【中文标题】在混淆时我是不是需要在 proguard 规则中“保持” Parcelable【英文标题】:Do I need to 'keep' Parcelable in proguard rules while obfuscating在混淆时我是否需要在 proguard 规则中“保持” Parcelable 【发布时间】:2016-07-04 18:17:00 【问题描述】:我的项目几乎没有扩展Parcelable 的类。 我是否需要在混淆时将它们“保留”在 proguard 规则中。
parcelables 的一般做法是什么?
【问题讨论】:
没有。但是,如果您使用 GSON 使用相同的类进行 JSON 解析,则使用带有字段名称的 serializedName 标记。 是的,您需要,如***.com/a/20918277/3050249中所述 【参考方案1】:不,默认的 android 规则包括:
-keepclassmembers class * implements android.os.Parcelable
public static final android.os.Parcelable$Creator CREATOR;
如果您保留默认生成的 gradle 定义,则将应用这些默认规则:
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
【讨论】:
确保不要忘记字段定义中的“final”!这就是我的原因,为什么 proguard 仍然删除它..【参考方案2】:如果您使用 Kotlin @Parcelize
和 proguard,您可以将其添加到 proguard-rules.pro
:
-keep @kotlinx.android.parcel.Parcelize public class *
【讨论】:
以上是关于在混淆时我是不是需要在 proguard 规则中“保持” Parcelable的主要内容,如果未能解决你的问题,请参考以下文章
Proguard 不会混淆 android 中的 strings.xml