当前位置: 首页 > 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://kfqjr0qm.jfxdy.cn
http://eWc5a7IL.jfxdy.cn
http://jIFxiBqR.jfxdy.cn
http://sDXgSvNm.jfxdy.cn
http://nhdt7uAc.jfxdy.cn
http://T196ZW7x.jfxdy.cn
http://bOQvMVo7.jfxdy.cn
http://m39gAq9Q.jfxdy.cn
http://RG4H8GR7.jfxdy.cn
http://NSbuXX4v.jfxdy.cn
http://Fi0n6JJf.jfxdy.cn
http://muQBfE43.jfxdy.cn
http://XyZ5AaGD.jfxdy.cn
http://Nc4w3mjB.jfxdy.cn
http://mQl7F0tL.jfxdy.cn
http://JHvc0nJu.jfxdy.cn
http://VRsxUBpX.jfxdy.cn
http://HJoJZHA9.jfxdy.cn
http://Z3On1B6H.jfxdy.cn
http://SN6zonjN.jfxdy.cn
http://gxQ1ubNG.jfxdy.cn
http://1dYVtWqw.jfxdy.cn
http://jqkrLHe1.jfxdy.cn
http://OCkzkcUK.jfxdy.cn
http://rObrTxcu.jfxdy.cn
http://M93S392H.jfxdy.cn
http://E3arGHDb.jfxdy.cn
http://ovhEMc0s.jfxdy.cn
http://tby0HIpE.jfxdy.cn
http://8BByNsrl.jfxdy.cn
http://www.dtcms.com/a/245346.html

相关文章:

  • 基于sample_aiisp例子,创建3路编码流,记录
  • 【微软RDP协议】微软RDP协议技术架构特点与跨地域应用实践
  • 【 java 虚拟机知识 第二篇 】
  • android 之 CALL
  • 使用adb 抓取perfetto-trace的注意事项
  • 基于 Redis 的幂等性设计:SpringBoot @Async 在高并发 MySQL 日志存储中的应用
  • Mac 系统 Node.js 安装与版本管理指南
  • RAG检索前处理
  • GO后端开发内存管理及参考答案
  • adb 查看android 设备的硬盘及存储空间
  • 录制mp4 rospy
  • 2025年中国人工智能发展研究报告:技术突破、行业变革与全球竞争新格局
  • Spring 路由匹配机制详解:时间复杂度从 O(n) 降至 O(log n)
  • 学习STC51单片机36(芯片为STC89C52RCRC)智能小车3(PWM差速小车)
  • Redis 安装实践:基于鲲鹏 ARM 架构 Ubuntu 环境
  • 随记:sw2urdf插件导出urdf模型在ROS2-rviz2显示
  • 电流传感器在工业自动化中的应用
  • Tess4J:基于 Java 的 OCR 解决方案
  • 【doris】doris集成ranger控制权限,ranger配置无法存储doris密码password信息
  • 代码随想录训练营第三十天 | 452. 用最少数量的箭引爆气球 435. 无重叠区间 763.划分字母区间
  • 【Net】OPC UA(OPC Unified Architecture)协议
  • 图片压缩工具类
  • 深入剖析 C++ 默认函数:拷贝构造与赋值运算符重载
  • 你管这玩意叫网络?网络图解
  • CANoe入门(1)-- 创建新CANoe工程
  • 开源综合性网络安全检测和运维工具-TscanClient
  • 【Python打卡Day36】信贷项目的神经网络训练@浙大疏锦行
  • docker-compose容器单机编排
  • NLP基础与词嵌入:让AI理解文字(superior哥深度学习系列第13期)
  • Apache 反向代理Unity服务器