如何在反应本机项目中重新生成ios文件夹



所以不久前我删除了我的 react 本机应用程序中的/ios 目录(我们称之为 X)。我一直在使用 android 模拟器进行开发和测试,但现在我想确保它适用于带有 xcode 模拟器等的 ios。

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

我将在这里更新这是怎么回事,但我想知道是否有更好的方法,以前没有人遇到过这种情况吗?

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

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

谢谢

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

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

只需删除/删除安卓和ios(保留备份安卓和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

将生成安卓和iOS文件夹。

参考:链接

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

react-native upgrade --legacy true

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

工作步骤 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

正如注释中@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

错误 无法识别的命令"弹出"。 信息 运行"反应本机 --帮助" 到 查看所有可用命令的列表。

react-native upgrade --legacy true

错误:未知选项"--旧版">

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

在"您的项目名称"目录中

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

在这样做之前,请确保您有干净的 git 历史记录,以防您需要还原

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

PS:备份您的代码以防更改应用程序.js

为时已晚,但对于仍然遇到相同问题并拥有分离的 react 本机应用程序的任何人来说,我为我所做的只是在我的分离应用程序上运行 exp detach,它创建了 ios 文件夹!

由于 react-native 弹出在 60.3 中已弃用,并且我在尝试将表单 60.1 升级到 60.3 时遇到差异错误,因此重新生成 android 文件夹不起作用。

我不得不

rm -R node_modules

然后将 package.json 中的 react-native 更新到 59.1(删除 package-lock.json)

npm install
react-native eject

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

react-native upgrade

React-本机升级,而返回和 59.1 没有重新生成我的 android 文件夹,因此必须弹出。

如果您因找不到模块之类的错误而迷路,如果您使用了反应本机 CLI,除了以下方法之外别无他法.由于从.xcodeproj文件而不是.xcworkspace 打开 xcode项目,我遇到了类似的问题。 另请注意,反应原生弹出仅适用于世博会项目。

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

  • 使用命令react-native init生成具有相同名称的项目
  • 将您的旧项目 ios 和安卓目录备份到备份位置
  • 然后将ios和android目录从新创建的项目中复制到旧的不起作用的项目中
  • 在复制的 ios 目录中运行pod 安装

现在你的问题应该解决了

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

当然,在运行"反应本机升级"命令时,它给了他们一条消息,即无需更新或使用命令"反应本机弹出"表示无法识别该命令。

react-native upgrade

现在,您应该使用react-native upgrade --legacy true命令备份Android文件夹或ios,因为此命令将替换您的文件。

react-native upgrade --legacy true

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

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

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

可以通过此命令找到可用选项react-native --help

截至 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 react-native eject

4.运行npx react-native run-android

就我而言,我根本没有android文件夹,我使用expo init来创建我的反应原生项目

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

  1. npm i react-native-eject
  2. NPX 反应原生弹出

(可选:运行 iOS 应用程序)

  1. cd iOS && Pod install
  2. NPX React-native run-iOS

相关内容

  • 没有找到相关文章

最新更新