项目使用RN 0.50.3,在测试中发现在三星手机上某个界面的操作会引发闪退,分析及解决步骤如下:
1. 打开手机开发者模式,连接至PC,在android studio的logcat中查找到exception
2. 拿这个exception去google发现,这是RN的一个版本bug
3. 解决办法有2种,一是通过升级版本解决;二是大多数人采用的,通过打补丁的方式,即修改源码,然后重新编译。贸然升级版本显然不合适,而修改源码重新编译的话,又由于当时项目紧张,要求尽快解决问题,重新编译我们没有尝试过,且从教程的步骤来看,比较繁杂,估计比较费时。于是我就想是不是可以直接替换那个出问题的class文件来解决,即用官方修复了bug的class来替换我们项目中那个class,这就省去了自己去编译源码的时间。
4. 按照步骤2的链接的启示找到了 app\node_modules\react-native\android\com\facebook\react\react-native\0.50.3\react-native-0.50.3.aar, 经过尝试发现,APP在android上run时加载的正是这个aar里面的classes.jar里面的class。于是去官网找到了RN 0.51.1的版本的react-native-0.51.1.aar,先将aar改为zip解压,然后将aar里面的classes.jar改为zip,取出