Reputation: 1554
So a while ago I deleted the /ios directory in my react native app (let's call it X). I've been developing and testing using the android emulator but now I'd like to make sure it works on ios with xcode simulator etc.
So my current idea is to create a new react native bare project (let's call it Y) with ios folder, then follow these steps to rename Y so that it has the name of X and then moving the /ios directory from Y into X and trying to run-ios
.
I'll update here how that goes, but I wondered if there is a better way and has nobody been in this situation before?
I've googled lots of things 'regenerate ios folder' 'deleted ios folder' 'add ios folder to existing..' and nothing helpful. Maybe my googlefu isn't good enough but if anyone has any suggestions, much appreciated.
Step 2 will be making sure it compiles because of dependencies and stuff but for now my goal is to just get the /ios folder back in the project and for React Native to be aware of it's existence (it has all the necessary config).
Thanks
Upvotes: 111
Views: 226582
Reputation: 317
Simply, do this to regenerate android and ios folders
npm install --dev react-native-eject
npx react-native eject
finally pod install and run ios for iOS and run android for Android
Upvotes: 1
Reputation: 1420
Run These command's from your project root:
npm i react-native-eject
npm i @react-native-community/cli
npx react-native eject
will generate the both android and ios folder
Upvotes: 0
Reputation: 2656
(optional: to run ios App)
Upvotes: 2
Reputation: 41
in my case I didn't have the android folder at all, I used expo init to create my react native project
and to generate Android Folder
run this command expo prebuild
Upvotes: 2
Reputation: 805
1.Delete /ios /android
2.Cretate file app.json
And add code:
{"name": "example", "displayName": "Example"}
3.run npx react-native eject
4.run npx react-native run-android
Upvotes: 0
Reputation: 640
As of end of August 2021 and [email protected]
/ [email protected]
none of presented solutions work for me. expo-cli
cannot work with modern react-native
downgrading package.json
and messing up all dependencies to a state where I cannot use neither react-native run-android
nor expo run:android
.
I have reported this issue on project GitHub. Feel free to comment and support for some reasonable solution in this area:
https://github.com/facebook/react-native/issues/32109
Upvotes: 0
Reputation: 1401
Working steps 2021.
/ios
/android
/app.json
and package.json
npx react-native upgrade
- this is important even if platform files are not generated.npx react-native init NewProjectName
there.pod install
in /ios
in old projectcd .. && npx react-native run-ios
Upvotes: 7
Reputation: 5095
Simply remove/delete android and ios (keep backup android and ios folder) and run following command:
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
Ref : link
Edited(March 2021)
npm i react-native-eject
npm i @react-native-community/cli
react-native eject
will generate the both android and ios folder.
Ref.: link
Upvotes: 87
Reputation: 110
UPDATE 2020. React Native 0.63.3 no longer support this command react-native eject
. Also react-native upgrade
responsible for - Upgrade your app's template files to the specified or latest npm version using rn-diff-purge
project.
Available options can be found thought this command
react-native --help
Upvotes: 0
Reputation: 164
i faced the same issue in react native .63 version. I tried above all methods but didn't worked. So, I tried like this deleted android/ios folders in my old project tree and initiated a new project with similar name in another folder, later copied android/ios folders from new project to old project and reset cache using react-native start --reset-cache and run react-native run-android and my attempt was successfull.
Upvotes: 0
Reputation: 336
PS: Take backup of your code in case it changes App.js
Upvotes: 2
Reputation: 11
I just found myself with this problem too, but I just solved it.
Surely when running the "react-native upgrade" command, it gave them the message that it was not necessary to update or with the command "react-native eject" that the command is not recognized.
react-native upgrade
Now you should use the react-native upgrade --legacy true
command to back up your android folders or ios as the case may be as this command will replace your files.
react-native upgrade --legacy true
Now it's just telling you not to replace your package.json
Upvotes: 1
Reputation: 11
If you are lost with errors like module not found there is noway other the than following method if you have used react native CLI.I had faced similar issue as a result of openning xcode project from .xcodeproj file instead of .xcworkspace. Also please note that react-native eject only for Expo project.
The only workaround to regenarate ios and android folders within a react native project is the following.
Now your problem should be solved
Upvotes: 1
Reputation: 363
❯ react-native eject
error Unrecognized command "eject". info Run "react-native --help" to see a list of all available commands.
❯ react-native upgrade --legacy true
error: unknown option `--legacy'
You can init a new project that's named the same in another folder and copy ios dir over:
inside YourProjectName directory
npx react-native init YourProjectName
mv YourProjectName/ios ios
rm -rf YourProjectName
Make sure you have clean git history before doing so, in case you need to revert
Upvotes: 4
Reputation: 2197
It seems like react-native eject
is no more available. The only way I could find for recreating the ios folder was to generate it from scratch.
Take a backup of your ios folder
mv /path_to_your_old_project/ios /path_to_your_backup_dir/ios_backup
Navigate to a temporary directory and create a new project with the same name as your current project
react-native init project_name
mv project_name/ios /path_to_your_old_project/ios
Install the pod dependencies inside the ios folder within your project
cd /path_to_your_old_project/ios
pod install
Upvotes: 4
Reputation: 390
Note as of react-native 0.60.x you can use the following to regenerate ios/android directories:
react-native upgrade --legacy true
Credit here: https://github.com/facebook/react-native/issues/25526
Upvotes: 29
Reputation: 11
Since react-native eject is depreciated in 60.3 and I was getting diff errors trying to upgrade form 60.1 to 60.3 regenerating the android folder was not working.
I had to
rm -R node_modules
Then update react-native in package.json to 59.1 (remove package-lock.json)
Run
npm install
react-native eject
This will regenerate your android and ios folders Finally upgrade back to 60.3
react-native upgrade
react-native upgrade while back and 59.1 did not regenerate my android folder so the eject was necessary.
Upvotes: 1
Reputation: 19055
As @Alok mentioned in the comments, you can do react-native eject
to generate the ios
and android
folders. But you will need an app.json
in your project first.
{"name": "example", "displayName": "Example"}
Upvotes: 4
Reputation: 2290
This is too late, but for anyone who is still having same issue and have a detached react native app, what i did for me I just run exp detach over my detached app and it created ios folder!
Upvotes: 1
Reputation: 3479
The process you need to follow is so similar to renaming a react native app. Basically you just need to run react-native upgrade
in your root project directory. For further info you can check another question here. The instructions below explains how to create another react native project based on a copied one with a new name.
index.ios/android.js
file which is given as a parameter to AppRegistry.package.json
/ios
and /android
folders which are remaining from your older app.$react-native upgrade
to generate /ios
and /android
folders again.$react-native link
for any native dependency.$react-native run-ios
or anything you want.Upvotes: 128