How to build .ipa for React Native?

IosIphoneReact NativeCommand LineIpa

Ios Problem Overview


I come to React Native development without previous experience in iOS development. I want to build release. .ipa file - ideally from the command line but the official documentation Running On Device is very brief.

I was able to deploy applications on my iPhone manually via XCode but still, I can't find any "release IPA" file. I have updated my code with #ifdef DEBUG directives to make it more generic.

Is there a way to build an application in release mode only via the command-line? If no, what is "the official" way to generate an RN application?

I am currently using RN 0.20.

Ios Solutions


Solution 1 - Ios

First, you need to create a bundle this way :

react-native bundle --dev false --entry-file index.ios.js --bundle-output ios/main.jsbundle --platform ios

Then, you have to comment this line in AppDelegate.m :

jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];

and uncomment this one :

jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];

Then you have to go for Product -> Archive in Xcode and follow the steps based on your desired release

Solution 2 - Ios

You have to set Scheme to Release.

From docs you have two ways.

> To do this, go to Product → Scheme → Edit Scheme (cmd + <), make sure you're in the Run tab from the side, and set the Build Configuration dropdown to Release.

or

> You can also use the React Native CLI to perform this operation using the option --configuration with the value Release (e.g. react-native run-ios --configuration Release).

Then you can generate your archive as usual.

https://facebook.github.io/react-native/docs/running-on-device.html#building-your-app-for-production

Solution 3 - Ios

i cannot comment on the above answer, it is correct but you need to start with the following command in order for it to work:

react-native bundle --dev false --entry-file index.ios.js --bundle-output ios/main.jsbundle --platform ios

the difference is 'ios' instead of 'iOS'

if not it will give the following error:

ProjectPath/node_modules/promise/lib/done.js:10
  throw err;
  ^

Solution 4 - Ios

iOS

  1. Open iOS project with Xcode using the following simple command from your root folder.

    xed ./ios
    
  2. Now paste the following command in terminal

    react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios
    

    enter image description here

  3. Edit the scheme from Xcode like this:

    Product -> Scheme -> Edit Scheme

    enter image description here

    Edit scheme to release

    enter image description here

Now you have a stand-alone Xcode project and ready to build/release like native Xcode project.

Ans From: https://medium.com/better-programming/create-ipa-and-apk-from-react-native-72fe53c6a8db

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsodikView Question on Stackoverflow
Solution 1 - IosG. HamaideView Answer on Stackoverflow
Solution 2 - IosDiego MelloView Answer on Stackoverflow
Solution 3 - IosHananeView Answer on Stackoverflow
Solution 4 - IosParesh MangukiyaView Answer on Stackoverflow