react-native 导致热更新失败的问题之一
2017-10-11 本文已影响49人
朱man
该文章是本人的一次项目总结,本人项目使用的是react-native-pushy。假设你已经有一个RN项目,且成功配置了pushy服务,接入配置好了热更代码,如果没有请参照react-native-pushy GitHub上的文档进行配置。
问题
最近APP改版后,打了一个新的热更包,然后用老版本APP去热更会出现闪退,debug调试报错如下Unable to execute JS call: __fbBatchedBridge is undefined。
错误操作流程
xcode修改version为1.0.0,然后打一个release模式的包到手机,然后xcode归档出一个1.0.0的ipa包出来,推到热更平台上,然后用这个底包去热更,然后就闪退了。
原因
通过多次复现问题,使用debug模式打印出报错,然后查看GitHub文档,找出原因是我操作流程的问题。热更必须保证pushy平台上的底包和手机上安装的app是同一个。然而我使用Xcode往手机安装的包,简称A,与用Xcode归档出来的包,简称B。A与B虽然代码完全一致,版本号一致,但这就已经是两个包了,所以热更失败。
解决方法
- 正常情况,直接把IPA包提交App Store审核,然后把这个IPA包upload到pushy平台,用户从App Store下载该版本的包就可以正常更新。
- 测试时,最好结合Text File,把归档出的IPA包upload到pushy平台,然后把IPA包提交到iTunes connect,测试人员从Text File下载该版本的包安装,然后就可以正常热更了。
- 如果你的iTunes没有升级,还可以通过Xcode编译一个release模式的包到手机,然后用iTunes导出该IPA包,然后upload该IPA到pushy平台,一样能正常热更。
总结
反正就是保证pushy平台的底包与手机上安装的app一致。