Android BadParcelableException仅带签名的apk

Android BadParcelableException仅带签名的apk,android,android-studio,proguard,parcelable,Android,Android Studio,Proguard,Parcelable,当我从调试运行我的项目时,一切正常。但是,当我使用从Android Studio生成的签名apk(使用proguard)运行它时,在使用getParcelable时会出现以下错误: java.lang.RuntimeException: Unable to start activity ComponentInfo{mypackage.android/mypackage.mobile.android.activities.searchActivity}: android.os.BadParcela

当我从调试运行我的项目时,一切正常。但是,当我使用从Android Studio生成的签名apk(使用proguard)运行它时,在使用getParcelable时会出现以下错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{mypackage.android/mypackage.mobile.android.activities.searchActivity}: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called  CREATOR on class mypackage.android.a.d.a

为什么只有我签名的apk才会发生这种异常?在我的proguard配置文件中,我必须使用
dontwarn android.support.v4.*
来避免proguard错误。这是不是又来咬我了?

您需要保护
创建者
字段不受proguard混淆的影响

将以下行添加到proguard配置中:

-keep class * implements android.os.Parcelable { 
   public static final android.os.Parcelable$Creator *; 
}

对于新手,如果忘记定义创建者字段,也会发生这种情况

public static final Parcelable.Creator CREATOR

proguard f**up您的类的创建者字段。。。你必须“告诉”progroud不要在你的类中删除这个字段
-keep class*实现android.os.Parcelable{public static final android.os.Parcelable$Creator*;}
谢谢!成功了。请发布为答案,以便我可以接受,未来的观众可以看到。谢谢。我把这个添加到了我的proguard-project.txt文件中,现在它可以工作了。谢谢,但是这些东西应该被谷歌记录下来!嗯,他们在defualt proguard设置中添加了这样的东西:ANDROID\u SDK\tools\proguard\proguard-ANDROID.txt。。。因此,如果您“以正常方式”将proguard与gradle一起使用,您就不必再担心这一点(通常我指的是
proguardFiles getDefaultProguardFile('proguard-android.txt'),您的特定文件放在这里。pro