Andorid6使用DataStore Protobuf闪退

    在开发中与到了一个问题,就是在Android6设备上进入某个界面会闪退,在Android6及以上设备都没问题,所以很奇怪!只出现在一种设备上的问题就很难办,因为无法确定是设备的问题还是代码的问题,而且也没有打错误日志,所以很难判定原因在哪?

    通过查看代码看看修改的代码发现只新增了protobuf进行数据存储的代码,但是之前也用过protobuf也没问题怎么这里就有问题了?而且log中也没有发现错误信息。不管吧,还是先顺着这个思路找下去看看,通过打断点发现确实是在查询protobuf和存储protobuf的过程中闪退的?那就很困惑了,代码中也确实看不出来有什么问题。

    然后再去打断点去查看,发现了一些蛛丝马迹,找到了 No virtual method getBoolean(Ljava/lang/Object;J)Z in class Lsun/misc/Unsafe关键信息,发现我存储的数据确实包含Boolean变量,难道是定义数据的问题?然后就通过搜索这个关键信息发现有一个人遇到了同样的问题,Android L: No virtual method getBoolean(Ljava/lang/Object;J)Z in class Lsun/misc/Unsafe · Issue #7867 · protocolbuffers/protobuf · GitHub,按照这个博客提示应该是官方插件的bug,可以通过升级版本解决,于是就顺着他的提示就升级了一下protobuf-java的版本,从3.8.0升级为3.13.0,再运行,发现果然不闪退了!

    在此记录一下,若小伙伴也遇到此问题可以通过此方法进行解决。

      

你可能感兴趣的:(Andorid6使用DataStore Protobuf闪退)