当前位置: 首页 > news >正文

解决新版RN 热更新报错:recreateReactContextInBackground

一、报错描述

React-native 集成 react-native-code-push 报错

java.lang.AssertionError: recreateReactContextInBackground should only be called after the initial createReactContextInBackground call.

在这里插入图片描述

二、原因分析

这是因为你使用了 rn 版本(0.76~到最新的0.79.3),此版本默认启用了TurboModules 新架构,新架构存在 bug:在安卓上无法清除rn内存中的上下文缓存,也就是说不支持实时热更新,除非应用杀死内存重启否则 rn 永远使用旧的不会变。

三、解决方案

1、关闭新架构

修改android 根目录下gradle.properties文件,将此字段置为 false:

newArchEnabled=false

备注:只改动上面配置即可,SoLoader.init(this, OpenSourceMergedSoMapping)不要改

2、启用新架构

只能做到下次启动 app更新

备注:TurboModules新架构决定了此特性,如果你有清理TurboModules 缓存的方法也请同步我下。

需修改代码如下(修改npm源码神器patch-package):

1、CodePush.java这里写死防止回滚

boolean updateIsLoading = pendingUpdate.getBoolean(CodePushConstants.PENDING_UPDATE_IS_LOADING_KEY);
// 如果启用newArchEnabled:此行写死避免代码回滚
updateIsLoading = false;

在这里插入图片描述
2、CodePushNativeModule.java注释掉重新创建上下文方法,防止报错退出 App

instanceManager.recreateReactContextInBackground();

在这里插入图片描述

http://www.xdnf.cn/news/1004455.html

相关文章:

  • Unity Mecanim C# 动画切换实践:实现随机播放待机动画
  • 网络安全:OWASP防护守则
  • Tomcat调优
  • Ntfs!NtfsAllocateRestartTableIndex函数分析和Ntfs!DIRTY_PAGE_ENTRY_V0结构的关系
  • CSS 基础选择器 文字控制属性 综合案例
  • python3.12安装记录
  • 分割任意组织:用于医学图像分割的单样本参考引导免训练自动点提示方法|文献速递-深度学习医疗AI最新文献
  • MCU、MPU、GPU、Soc、DSP、FPGA、CPLD……它们到底是什么?
  • 日本云服务器租用多少钱合适
  • 当卷积作用于信号处理
  • AppInventor2原生进度条组件LinearProgress用法及注意点
  • 第四讲 基础运算之小数运算
  • SAP ERS 自动化发票
  • ubuntu 挂载问题
  • COHERENT XPRV23光电接收器控制软件
  • 观点 | 技术型企业在参数堆砌下的品牌识别度缺失
  • 5分钟玩转Swagger UI:Docker部署+静态化实战
  • 零基础设计模式——行为型模式 - 观察者模式
  • 将创世SD NAND FLASH设计在无人机上,可从硬件适配、接口与协议兼容、性能匹配
  • 不同环境的配置文件
  • OpenCV 图像几何形状绘制
  • 回归-嵌入式与c概念
  • docker 单机部署redis集群(一)
  • 股指期货入门基础知识
  • 【笔记】Blockchain
  • 微机原理与接口技术,期末习题(一)
  • 突破微小目标检测瓶颈:智能无人机在蓝莓产量估算中的解决方案
  • Smart Form Adobe form
  • 华为云Flexus+DeepSeek征文|基于华为云一键部署的 Dify LLM 应用平台三种方案横评:单机、知识库增强、高可用容器化比较
  • DAY 52 神经网络调参指南