React-Native Release包闪退,Debug包正常的一种情况(metro分包导致)

关键信息:
1、Unhandled JS Exception: Invariant Violation: Module AppRegistry is not a registered callable module (calling runApplication),
2、Debug正常,Release包闪退。Android/iOS相同
3、项目有metro分包打包
4、新引入了一个第三方,新建一个项目使用该第三方没问题

结论/原因:moduleId重复导致

1、metro分包,固定了各个module的moduleId(比如我们的项目是login模块1000,main模块2000等等),各模块内引用的第三方库模块在本模块基础上自增处理,比如1001,1002
2、引入第三方前没问题(自增模块比较少,没超过1000);引入第三方后,超过了1000,比如出现了2000,与main模块冲突,闪退
3、debug模式因为不涉及分包,所以无影响

处理方式

临时处理为将主要模块改为10000、20000等等,后续可修改自增逻辑

参考资料:

React Native 拆包实践4 - createModuleIdFactory

你可能感兴趣的:(React-Native Release包闪退,Debug包正常的一种情况(metro分包导致))