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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容