繁体   English   中英

如何在 React Native 项目中重新生成 ios 文件夹?

[英]How can I regenerate ios folder in React Native project?

所以前一段时间我删除了我的反应本机应用程序中的 /ios 目录(我们称之为 X)。 我一直在使用 android 模拟器进行开发和测试,但现在我想确保它可以在 ios 和 xcode 模拟器等上运行。

所以我目前的想法是用 ios 文件夹创建一个新的 React Native 裸项目(我们称之为 Y),然后按照以下步骤重命名 Y,使其具有 X 的名称,然后将 /ios 目录从 Y 移动到 X 和试图run-ios

我会在这里更新情况如何,但我想知道是否有更好的方法并且以前没有人遇到过这种情况?

我在谷歌上搜索了很多东西'重新生成 ios 文件夹''删除 ios 文件夹''将 ios 文件夹添加到现有..'但没有任何帮助。 也许我的 googlefu 不够好,但如果有人有任何建议,非常感谢。

第 2 步将确保它由于依赖关系和其他东西而编译,但现在我的目标是将 /ios 文件夹放回项目中,并让 React Native 知道它的存在(它具有所有必要的配置)。

谢谢

您需要遵循的过程与重命名 React Native 应用程序非常相似。 基本上你只需要在你的根项目目录中运行react-native upgrade 有关更多信息,您可以在此处查看另一个问题。 下面的说明解释了如何基于具有新名称的复制项目创建另一个 React Native 项目。

  • 首先复制您要更改名称的应用程序所在的目录。 并转到您新克隆的目录。
  • 更改作为参数提供给 AppRegistry 的index.ios/android.js文件中的名称。
  • package.json相应地更改名称和版本
  • 删除旧应用中剩余的/ios/android文件夹。
  • 运行$react-native upgrade再次生成/ios/android文件夹。
  • 为任何本机依赖项运行$react-native link
  • 最后运行$react-native run-ios或任何你想要的。

只需删除/删除 android 和 ios(保留备份 android 和 ios 文件夹)并运行以下命令:

  react-native eject

Supported version : 
    react-native <= 0.59.10
    react-native-cli <= 1.3.0 



   react-native upgrade --legacy true

Supported version : 
        react-native >= 0.60.0
        react-native-cli >= 2.1.0 

参考: 链接

已编辑(2021 年 3 月)

npm i react-native-eject
npm i @react-native-community/cli
react-native eject

将生成 android 和 ios 文件夹。

参考: 链接

请注意,从 react-native 0.60.x 开始,您可以使用以下内容重新生成 ios/android 目录:

react-native upgrade --legacy true

信用在这里: https : //github.com/facebook/react-native/issues/25526

正如@Alok 在评论中提到的,您可以执行react-native eject来生成iosandroid文件夹。 但是您首先需要在您的项目中使用app.json

{"name": "example", "displayName": "Example"}

似乎react-native eject不再可用。 我能找到的重新创建 ios 文件夹的唯一方法是从头开始生成它。

备份你的 ios 文件夹

mv /path_to_your_old_project/ios /path_to_your_backup_dir/ios_backup

导航到一个临时目录并创建一个与当前项目同名的新项目

react-native init project_name
mv project_name/ios /path_to_your_old_project/ios

在项目中的 ios 文件夹中安装 pod 依赖项

cd /path_to_your_old_project/ios
pod install

react-native eject

错误无法识别的命令“弹出”。 info 运行“react-native --help”以查看所有可用命令的列表。

react-native upgrade --legacy true

错误:未知选项`--legacy'

您可以在另一个文件夹中初始化一个同名的新项目,然后将 ios 目录复制过来:

在 YourProjectName 目录中

npx react-native init YourProjectName
mv YourProjectName/ios ios
rm -rf YourProjectName

在这样做之前确保你有干净的 git 历史记录,以防你需要恢复

这为时已晚,但是对于仍然存在相同问题并拥有分离的 React Native 应用程序的任何人,我为我所做的我只是在分离的应用程序上运行 exp detach 并创建了 ios 文件夹!

由于本机弹出在 60.3 中折旧,并且我在尝试将 60.1 升级到 60.3 时遇到 diff 错误,因此重新生成 android 文件夹不起作用。

我不得不

rm -R node_modules

然后将 package.json 中的 react-native 更新为 59.1(去掉 package-lock.json)

npm install

react-native eject

这将重新生成您的 android 和 ios 文件夹最后升级回 60.3

react-native upgrade

react-native 升级,而 59.1 没有重新生成我的 android 文件夹,所以弹出是必要的。

我刚发现自己也遇到了这个问题,但我刚刚解决了它。

当然,当运行“react-native upgrade”命令时,它给了他们不需要更新的消息,或者使用“react-native eject”命令无法识别该命令。

react-native upgrade

现在您应该使用react-native upgrade --legacy true命令来备份您的 android 文件夹或 ios 视情况而定,因为此命令将替换您的文件。

react-native upgrade --legacy true

现在它只是告诉你不要替换你的 package.json

如果您因找不到模块之类的错误而迷路,如果您使用了 react native CLI,那么除了以下方法之外别无他法。由于从.xcodeproj文件而不是.xcworkspace打开 xcode 项目,我遇到了类似的问题。 另请注意,react-native 仅适用于 Expo 项目。

在本机项目中重新生成 ios 和 android 文件夹的唯一解决方法如下。

  • 使用命令react-native init生成同名项目
  • 将旧项目 ios 和 android 目录备份到备份位置
  • 然后将 ios 和 android 目录从新创建的项目复制到旧的不工作项目中
  • 在复制的 ios 目录中运行pod install

现在你的问题应该解决了

  1. 打开终端/cmd
  2. 移动到项目“ProjectName”文件夹所在的文件夹/目录(不要进入项目目录)
  3. 运行命令为: react-native init "ProjectName"它将警告项目目录已经存在,但您继续。
  4. 它将在项目中安装所有更新的节点模块以及缺少的平台 (android/ios) 文件夹,而不会干扰已经编写的代码。
  5. cd "ProjectName"然后cd ios然后运行pod install

PS:备份你的代码,以防它改变 App.js

2020 年更新。 React Native 0.63.3 不再支持此命令react-native eject 还负责react-native upgrade -使用rn-diff-purge项目将应用程序的模板文件升级到指定或最新的 npm 版本。

可以通过这个命令找到可用的选项react-native --help

工作步骤2021

  • 删除/ios /android
  • /app.jsonpackage.json中将应用名称更改为新名称
  • 运行npx react-native upgrade - 即使没有生成平台文件,这也很重要。
  • 创建一个单独的目录并在那里运行npx react-native init NewProjectName
  • 将生成的项目中的 ios 和 android 文件夹复制到旧项目中
  • 在旧项目的/ios中运行pod install
  • 运行cd .. && npx react-native run-ios

我在 react native .63 版本中遇到了同样的问题。 我尝试了以上所有方法,但没有奏效。 所以,我尝试像这样删除旧项目树中的 android/ios 文件夹,并在另一个文件夹中启动一个具有相似名称的新项目,后来将 android/ios 文件夹从新项目复制到旧项目并使用 react-native start 重置缓存 -重置缓存并运行 react-native run-android 并且我的尝试成功了。

截至 2021 年 8 月末, react@17.0.2 / react-native@0.65.1提出的解决方案都不适合我。 expo-cli无法与现代react-native降级package.json一起使用,并将所有依赖项搞乱到我既不能使用react-native run-android也不能使用expo run:android的状态。

我已经在 GitHub 项目上报告了这个问题。 欢迎评论和支持这方面的一些合理解决方案:

https://github.com/facebook/react-native/issues/32109

1.删除/ios /android

2.创建文件app.json

并添加代码:

{"name": "example", "displayName": "Example"}

3.运行 npx npx react-native eject

4.运行npx npx react-native run-android

在我的例子中,我根本没有 android 文件夹,我使用 expo init 来创建我的 react native 项目

并生成Android Folder运行此命令expo prebuild

  1. npm 我本机弹出
  2. npx react-native 弹出

(可选:运行 ios App)

  1. cd ios && pod 安装
  2. npx react-native 运行 ios

先删除ios文件夹

 react-native eject 
 cd ios/ 
 pod init 
 pod install 
 cd .. 
 react-native link 
 cd ios 
 open *.xcworkspace/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM