You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

卸载react-native-mmkv后安卓运行报错iOS端正常如何排查解决

问题根因

该报错核心原因是安卓构建链路/代码中残留了react-native-mmkv的引用:你卸载npm包后,JS侧缓存、安卓Gradle构建缓存、手动链接的原生配置、代码中未清理的MMKV调用逻辑任意一处残留,都会出现JS侧尝试调用MMKV原生初始化方法、但原生包已经被移除的报错。iOS端无异常是因为iOS执行pod install时会自动同步移除不存在的pod依赖,缓存清理逻辑和安卓有差异,不会触发这类残留问题。

排查解决步骤

按以下顺序操作,每步做完可以先尝试运行验证,不用一次性全做完:

  • 首先清理JS侧全量缓存
    在项目根目录执行以下命令,排除Metro打包缓存旧代码的问题:
    rm -rf node_modules
    # 根据你用的包管理器删对应锁文件
    rm -f yarn.lock package-lock.json pnpm-lock.yaml
    # 重新安装依赖
    npm install
    # 带重置缓存参数启动Metro服务
    npx react-native start --reset-cache
    
  • 清理安卓侧构建缓存与依赖残留
    进入项目下的android目录执行:
    # 停止所有运行中的Gradle进程
    ./gradlew --stop
    # 清空所有历史构建产物
    ./gradlew clean
    # 检查自动链接依赖列表,确认MMKV已被移除
    ./gradlew app:dependencies | grep mmkv
    
    如果grep命令还能搜到MMKV相关依赖,手动检查以下位置的手动配置并删除:
    • android/settings.gradle中手动添加的MMKV项目引入
    • android/app/build.gradle中手动添加的MMKV编译依赖
    • android/app/src/main/目录下MainApplication文件中手动注册的MMKVPackage代码与对应导包语句
  • 全局扫描代码中残留的MMKV调用
    全局搜索所有.js/.ts/.tsx后缀的文件,删除所有MMKV相关的导入、初始化逻辑,重点检查以下场景:
    • 自定义封装的存储工具类中遗留的MMKV实例化代码
    • 状态持久化配置(redux-persist、zustand持久化、mobx持久化等)是否还指定MMKV作为存储引擎
    • 项目引入的三方依赖是否存在硬依赖react-native-mmkv的情况,如果有这类依赖要么替换/卸载对应三方库,要么重新安装react-native-mmkv
  • 清理测试设备上的旧安装包
    直接卸载安卓模拟器/真机上已经安装的旧版本APK,避免覆盖安装时旧应用的本地缓存触发MMKV调用逻辑,之后再重新通过Android Studio运行安装新包。
补充说明

哪怕MMKV正常安装的场景下,开启Chrome远程调试也会触发类似JSI相关报错,因为远程调试模式下JSI接口会被禁用,调试时如果需要用MMKV请改用Hermes内置的调试器,不要用Chrome远程调试。

内容的提问来源于stack exchange,提问作者djes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 23:33:34