微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在我的项目上启用混淆后,在BroadcastReceiver中获取InvalidClassException

如何解决在我的项目上启用混淆后,在BroadcastReceiver中获取InvalidClassException

我的项目运行正常,但是一旦我开始混淆代码,就会收到以下异常

致命异常:java.lang.RuntimeException:遇到可打包 IOException读取可序列化的对象(名称= com.mypackage.service.b.a)由java.io.InvalidClassException引起: com.mypackage.service.b.a);用于反序列化的类

这是在下面的broadcastReceiver中发生的

    public class MyReceiver extends broadcastReceiver {

    @Override
    public void onReceive(final Context context,Intent intent) {
        if (intent != null) {
            UpdateServiceConfig config = null;
            final Bundle bundle = intent.getBundleExtra(Keys.DATA);
            if (bundle != null) {
crash   =>          config = (UpdateServiceConfig) bundle.getSerializable(Keys.CONfig);
            }
        }
    }
}

这是我的Proguard规则

-keepnames class * implements java.io.Serializable

-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    !static !transient <fields>;
    !private <fields>;
    !private <methods>;
    private void writeObject(java.io.ObjectOutputStream);
    private void readobject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}

-keep class com.mypackage.service.config.UpdateServiceConfig { *; }
-keep class com.mypackage.service.config.config.** { *; }

在应用程序的其他部分,可以通过完全相同的方式从捆绑包中检索此类,而无需执行任何操作。看起来这是由broadcastReceiver处理的事实。你知道是什么原因造成的,以及如何解决这个问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。