前一段时间我在我的本机应用程序中删除了/ ios目录(我们称之为X)。我一直在使用android模拟器进行开发和测试,但现在我想确保它适用于带有xcode模拟器等的ios。
所以我目前的想法是用ios文件夹创建一个新的反应原生裸项目(让我们称之为Y),然后按these steps重命名Y,使其名称为X,然后移动/ ios目录从Y到X并尝试{{1}}。
我会在这里更新一下,但我想知道是否有更好的方法并且之前没有人遇到这种情况?
我已经搜索了很多东西'重新生成ios文件夹''已删除的ios文件夹''将ios文件夹添加到现有文件夹中'并且没有任何帮助。也许我的googlefu不够好,但如果有人有任何建议,非常感谢。
第2步将确保它因为依赖和东西而编译但是现在我的目标是在项目中恢复/ ios文件夹,并让React Native知道它的存在(它具有所有必要的配置)。
由于
答案 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
答案 3 :(得分:2)
现在已经太晚了,但是对于那些仍然有同样问题并且有一个独立的反应原生应用程序的人,我为我做了什么我只是在我的独立应用程序上运行exp分离它创建了ios文件夹!
答案 4 :(得分:1)
正如@Alok在评论中提到的,您可以执行services.AddSingleton<ITelemetryInitializer, TelemetryProperties>();
来生成react-native eject
和ios
文件夹。但是您首先需要在项目中使用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文件夹的唯一解决方法如下。
现在应该解决您的问题
答案 7 :(得分:1)
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.json
和 package.json
中将应用名称更改为新名称npx react-native upgrade
- 即使没有生成平台文件,这也很重要。npx react-native init NewProjectName
。pod install
中运行 /ios
cd .. && npx react-native run-ios