Proguard 与 Parceler 和 Realm
Proguard with Parceler and Realm
我正在使用 Realm 和 Parceler,一切正常,但是当我启用 Proguard 时,我在执行以下操作时遇到错误:
Parcels.wrap(obj)
我收到以下错误:
org.parceler.ParcelerRuntimeException: Unable to find generated Parcelable class for io.realm.g, verify that your class is configured properly and that the Parcelable class io.realm.g$$Parcelable is generated by Parceler.
虽然我已经配置了混淆器规则:
##---------------Begin: proguard configuration for realm ----------
-keep class io.realm.annotations.RealmModule
-keep @io.realm.annotations.RealmModule class *
-keep class io.realm.internal.Keep
-keep @io.realm.internal.Keep class * { *; }
-dontwarn javax.**
-dontwarn io.realm.*
##---------------End: proguard configuration for realm ----------
##---------------Begin: proguard configuration for Parcel ----------
-keep interface org.parceler.Parcel
-keep @org.parceler.Parcel class * { *; }
-keep class **$$Parcelable { *; }
-keep class org.parceler.Parceler$$Parcels
-keep @org.parceler.Parcel class * { *; }
-keep class *$$Parcelable { *; }
##---------------End: proguard configuration for Parcel ----------
我要包裹的对象看起来像:
@Parcel(implementations = { ContentRealmProxy.class },
value = Parcel.Serialization.BEAN,
analyze = { Content.class })
public class Content extends RealmObject {
....
}
提前致谢
您可以添加这个,看看是否有帮助:
#realm
-keepnames public class * extends io.realm.RealmObject
-keep @io.realm.annotations.RealmModule class *
-keep class io.realm.** { *; }
-dontwarn javax.**
-dontwarn io.realm.**
我认为问题在于,当您保留 RealmObject 的名称时,您实际上并没有保留 Realm 代理的名称 类。
所以这一行
-keepnames public class * extends io.realm.RealmObject
一个人应该够了。
我正在使用 Realm 和 Parceler,一切正常,但是当我启用 Proguard 时,我在执行以下操作时遇到错误:
Parcels.wrap(obj)
我收到以下错误:
org.parceler.ParcelerRuntimeException: Unable to find generated Parcelable class for io.realm.g, verify that your class is configured properly and that the Parcelable class io.realm.g$$Parcelable is generated by Parceler.
虽然我已经配置了混淆器规则:
##---------------Begin: proguard configuration for realm ----------
-keep class io.realm.annotations.RealmModule
-keep @io.realm.annotations.RealmModule class *
-keep class io.realm.internal.Keep
-keep @io.realm.internal.Keep class * { *; }
-dontwarn javax.**
-dontwarn io.realm.*
##---------------End: proguard configuration for realm ----------
##---------------Begin: proguard configuration for Parcel ----------
-keep interface org.parceler.Parcel
-keep @org.parceler.Parcel class * { *; }
-keep class **$$Parcelable { *; }
-keep class org.parceler.Parceler$$Parcels
-keep @org.parceler.Parcel class * { *; }
-keep class *$$Parcelable { *; }
##---------------End: proguard configuration for Parcel ----------
我要包裹的对象看起来像:
@Parcel(implementations = { ContentRealmProxy.class },
value = Parcel.Serialization.BEAN,
analyze = { Content.class })
public class Content extends RealmObject {
....
}
提前致谢
您可以添加这个,看看是否有帮助:
#realm
-keepnames public class * extends io.realm.RealmObject
-keep @io.realm.annotations.RealmModule class *
-keep class io.realm.** { *; }
-dontwarn javax.**
-dontwarn io.realm.**
我认为问题在于,当您保留 RealmObject 的名称时,您实际上并没有保留 Realm 代理的名称 类。
所以这一行
-keepnames public class * extends io.realm.RealmObject
一个人应该够了。