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

React Native iOS应用改名报错求助:旧应用名未注册

解决React Native iOS改名后"Invariant Violation: [old app name] has not been registered"错误

以下是针对该问题的具体排查和解决步骤:

  • 彻底重置Metro服务与缓存
    停止当前运行的Metro服务(按Ctrl+C终止),在项目根目录执行以下命令重启并清空缓存:

    npx react-native start --reset-cache
    

    确保Metro服务是在项目根目录启动,而非ios或android子目录。

  • 确认AppRegistry注册名称匹配新应用名
    打开项目入口文件(通常为index.js或App.js),检查AppRegistry.registerComponent的第一个参数是否为新的应用名称,示例:

    import { AppRegistry } from 'react-native';
    import App from './App';
    import { name as appName } from './app.json';
    
    // 确保这里的名称与新应用名完全一致(区分大小写)
    AppRegistry.registerComponent(appName, () => App);
    

    注意:若使用app.json中的name字段,需同步修改app.json里的name值为新应用名。

  • 清理iOS本地构建缓存

    1. 关闭Xcode
    2. 删除ios目录下的构建产物:
      rm -rf ios/build
      
    3. (可选,若上述步骤无效)清空模拟器所有数据:
      xcrun simctl erase all
      
    4. 重新进入ios目录执行pod install,再重新构建项目。
  • 检查项目配置文件中的旧名称残留

    • 打开ios/[YourProjectName].xcodeproj/project.pbxproj,搜索旧应用名称,确认无未更新的引用
    • 检查package.json中的name字段,确保已修改为新应用名,修改后可重新执行yarn install确保依赖同步
  • 排查第三方依赖的硬编码引用
    全局搜索项目中是否有第三方库或自定义代码硬编码了旧应用名称,执行以下命令(排除node_modules):

    grep -r "OldAppName" --include="*.js" --include="*.plist" --include="*.pbxproj" . --exclude-dir=node_modules
    

    若找到相关引用,同步更新为新应用名称。

内容的提问来源于stack exchange,提问作者Jennifer De Goede

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:20:27