当你遇到在自己手上测试没有问题,出了正式版给测试去测发现数据会报错,程序崩溃。这时候不要慌

最近完成了一个点餐系统app,在自己手机测试完成后,激动的人心的时刻到了。终于可以出正式包了,进行相关的混淆配置之后。出了正式包后,给测试同事去测试。没过两分钟,她就来找我了,说程序一直崩溃。我当时就一脸懵逼了,我自己测试的好好怎么会崩溃呢。而且她都是常规操作,所谓的常规操作就是把业务逻辑给跑通。但是这个正式版本居然连常规操作都跑不通!!

于是马上拿起自己的测试机,按照测试同事的操作,走一遍。结果很完美,一点问题都没有。我和测试一脸懵逼对视一眼,心里告诉自己不要慌,冷静去分析这会是什么问题。第一个疑问就是,为什么在我测试机上是没有问题的,在测试同事手机上有问题?难道因为机型的适配不同?但是两台手机是一样的,所以排除这个可能。不是手机的问题,就是app的问题了。这样就出了第二个疑问,我和测试的app有不一样的地方?唯一不一样的地方就是,她的是正式版,对,我的是debug版本。不一样就在她的有经过混淆,我的没有。对!混淆,可能是混淆的问题!因为点餐系统有分客户端,商家端。出问题的地方在,当客户端下单,推送到对应商家端后,商家端接收到推送后,就有出现数据的错乱。而客户端也有在订单的页面开始崩溃。所以问题就在,推送的那条数据中,接入数据线,马上看日志log。终于让我猜对了!推送的数据有问题,因为正式版加入混淆后,推送的数据也被混淆了,原来的字段名称都变成了abc。商家接到推送后,就出现了数据错乱的现象。订单页面崩溃也因为,数据的字段对不上,出现了常见的NullPointException。

找到问题就好解决了,我可以去调整混淆规则,keep住我的数据不被混淆就好了。只需在proguard-rules.pro配置一条保持不被混淆的语句就好了。就这样问题解决了。

其实计算机是一个很合理,很有逻辑性的东西,有一句话很适合形容它,就是存在即合理。所有的出错的,肯定是有相关的逻辑关系,不会凭空出现的。所以当遇到app出错,崩溃。第一时间告诉自己,不要慌,分析问题,解决问题才是最重要的思考。

android之路,不放弃,加油

猜你喜欢

转载自blog.csdn.net/ruan_number3/article/details/79447729
今日推荐