[英]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 项目。
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
来生成ios
和android
文件夹。 但是您首先需要在您的项目中使用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 文件夹的唯一解决方法如下。
现在你的问题应该解决了
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.json
和package.json
中将应用名称更改为新名称npx react-native upgrade
- 即使没有生成平台文件,这也很重要。npx react-native init NewProjectName
。/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 项目上报告了这个问题。 欢迎评论和支持这方面的一些合理解决方案:
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
(可选:运行 ios App)
先删除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.