记一次"代码过期"错误

最近太忙了,每天加班到十一点,都来不及写博客了。

昨天晚上9点,我完成了一个feature,结果编译结束发现apk的hosttab点击事件无效了。

懵逼,因为4点还是好的。

于是回退代码,回退到4点,发现编译好了还是这个问题。懵逼。

然后继续回退,回退到上次释放正确版本的地方,发现还是有这个问题,继续懵逼。

继续回退,回退到上个人离职的时候,发现还是有这个问题。超级懵逼。

也就是原本有用的代码,突然没用了。

排查,发现tabhost的点击事件没传下去,继续排查,发现tabhost各个子tab的点击事件没接收到,然后写父类的ontouch事件,发现父类并没有拦截,而是返回给在上面的父类了。而各个父类都没有拦截。

什么情况?

然后不知道怎么回事了,彻底懵逼了。

然后技术总监和我讲这种情况就应该对比二进制文件。

于是反编译上个版本释放的apk,对比相同代码生成的apk,发现真有问题,butterknife生成代码的时候覆盖了之前的按钮。蛋疼

原因是因为butterknife版本是snapshot,而有个人提交了一个错误的代码到butterknife中,导致我错误了。难受。