LoginSignup
29
23

More than 5 years have passed since last update.

React NativeでiOSアプリをリリースビルドする

Last updated at Posted at 2018-04-11

ほぼ公式docsの翻訳です。

1. App Transport Security(ATS)を有効にする

App Transport Securityは、iOS 9から導入されたセキュリティ機能で、非HTTPS通信(HTTP通信)を禁止するものです。これは、React Nativeサーバーも含む、HTTP通信がブロックされる可能性があります。React Nativeプロジェクトでは、開発をカンタンにするため、localhostに対するATSが無効化されています。

リリースビルドに先立って、ATSを再度有効にする必要があります。iosフォルダの中のInfo.plist内のNSExceptionDomainsから、localhostのエントリを削除してください。Xcodeの中でターゲットを選択し、InfoパネルのApp Transport Security Settingsエントリを編集することでもATSを再度有効化することができます。

もしアプリ内でHTTP通信を許可する必要があれば、この記事でATSを設定する方法について学習してください。

2. Release schemeを設定する

Appストアで配布するアプリをビルドするためには、Xcode内でRelease schemeを使用する必要があります。 リリース向けにビルドされたアプリは自動的にデベロッパーメニュが無効化されます。リリースされたアプリでうっかりユーザーがデベロッパーメニューを開いてしまうのを防ぎます。また、JavaScriptをローカルにバンドルするので、PCに繋がっていなくてもアプリをデバイスで実行することができます。

Release schemeを使って設定するためには、 Product → Scheme → Edit Schemeへ進んでください。

↓ここ押して出るドロップダウンの中の「Edit Scheme」をクリック
スクリーンショット 2018-04-11 16.35.13.png

サイドバーのRunタブから、Build ConfigurationドロップダウンをReleaseに変更してください。
スクリーンショット 2018-04-11 16.40.31.png

3. static bundleを使うための設定

開発中は, ランタイムで動的にJavaScriptが読み込まれていました。リリースビルドでは、JavaScriptをあらかじめアプリ内にパッケージする必要があります。static bundleで読み込むためには、コードを変更する必要があります。

AppDelegate.m 内で、 デフォルトのjsCodeLocationをstatic buildの場所へ変更します。

//  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];

これでビルドで生成される「main.jsbundle」を参照するようになります。このファイルは、デバッグビルドを含む、実機がターゲットのビルド時に生成されます。

tip省略

4.リリースビルド

これで、⌘Bでビルドできます。一度リリースビルドを行えば、beta testersへ配布したり、App Storeに公開することができます。
以下のCLIコマンドでもリリースビルドを実行できます。

react-native run-ios --configuration Release
29
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
23