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

时间:2017-02-28 10:21:56

标签: ios xcode react-native react-native-ios

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

所以我目前的想法是用ios文件夹创建一个新的反应原生裸项目(让我们称之为Y),然后按these steps重命名Y,使其名称为X,然后移动/ ios目录从Y到X并尝试{{1}}。

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

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

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

由于

15 个答案:

答案 0 :(得分:96)

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

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

答案 1 :(得分:24)

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

ml.t2.medium

答案 2 :(得分:5)

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

react-native upgrade --legacy true

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

答案 3 :(得分:2)

现在已经太晚了,但是对于那些仍然有同样问题并且有一个独立的反应原生应用程序的人,我为我做了什么我只是在我的独立应用程序上运行exp分离它创建了ios文件夹!

答案 4 :(得分:1)

正如@Alok在评论中提到的,您可以执行services.AddSingleton<ITelemetryInitializer, TelemetryProperties>();来生成react-native ejectios文件夹。但是您首先需要在项目中使用android

app.json

答案 5 :(得分:1)

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

当然,在运行“ react-native upgrade”命令时,它会向他们发出消息,表明不需要更新或使用“ react-nativeject”命令无法识别该命令。

本机升级

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

本机升级-旧版真

现在,它只是告诉您不要替换package.json

答案 6 :(得分:1)

如果您因诸如找不到模块之类的错误而迷路,如果您使用React Native CLI,则除了以下方法外别无选择。由于从< strong> .xcodeproj 文件,而不是 .xcworkspace 。 另外请注意,本机弹出仅适用于Expo项目。

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

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

现在应该解决您的问题

答案 7 :(得分:1)

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

PS::备份代码以防更改App.js

答案 8 :(得分:0)

由于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

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

react-native upgrade

返回59.1时的本机升级无法重新生成我的android文件夹,因此有必要弹出。

答案 9 :(得分:0)

先删除ios文件夹

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

答案 10 :(得分:0)

似乎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

答案 11 :(得分:0)

react-native eject

  

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

react-native upgrade --legacy true

  

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

您可以在另一个文件夹中初始化一个名称相同的新项目,并将ios目录复制到以下位置:

在YourProjectName目录内

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

在执行此操作之前,请确保您具有干净的git历史记录,以防您需要还原

答案 12 :(得分:0)

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

答案 13 :(得分:0)

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

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

答案 14 :(得分:0)

工作步骤 2021

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