Lean Engineer

リーンエンジニア〜効率的に実験しながら、技術を学ぶブログ

ReactNativeでハイブリッドでプロダクション環境を設定する

 ReactNativeのハイブリッドをリリースしようと思うと、jsをバンドルし、Xcodeに埋め込む必要がある。

 また、開発時点だと以下のようになっているが、localhostからjsを読み込んでいるので、ここも修正する必要がある。

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

 まず、XcodeのBuild Phasesで、New Run Script Phaseをし、そこに下記のスクリプトを書く

export NODE_BINARY=node
../node_modules/react-native/scripts/react-native-xcode.sh

 これで、リリースビルドしたときに、Xcodeにindex.bundleやImageファイルが追加される。

 ReactNativeの呼び出すときのコードは以下のように変更すると便利だ。

#import <React/RCTBundleURLProvider.h>


NSURL *jsCodeLocation;
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];

 これで、デバッグビルドのときはlocalhostからリソースを読み込んでくれて、リリースビルドのときはXcodeにバンドルファイルから読み込まれ、ローカルファイルから読み込まれる。