4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

React NativeでiOSアプリを環境ごとに共存させる

Last updated at Posted at 2020-01-09

背景・動機

業務でReact Nativeを使ったアプリを開発しています。
実機でアプリをテストする際に、毎回環境を切り替えてビルドする手間がかかっていました。
環境ごとに別名のアプリをビルドし実機にインストールできるようにしたので、備忘録も兼ねて投稿します。

概要

アプリからバックエンドのAPIサーバや、WebViewを使ってWebサーバへアクセスしており、バックエンドのサーバには、Development、Staging、Productionの3つの環境があります。

今回は、アプリもバックエンドのサーバと同様にStaging環境を追加し、Debug、Staging、Releaseでそれぞれ別名のアプリをビルドし実機にインストールします。

以下のような状態を目指します。

iPhone.png

1. アプリのConfigurationにStagingを追加

デフォルトの状態ではアプリにはDebugとReleaseの2種類の設定しか用意されていませんので、Stagingの設定を追加します。

  • Xcodeを開き、PROJECT > Info > Configurationsの「+」をクリック。
  • Duplicate "Release" Configurationを選択し、Stagingと入力します。

image.png

2. Reactの各ライブラリがReleaseビルドを参照するようにPathを追加

ConfigurationにStagingを追加するだけではビルドに失敗してしまいます。
Reactをはじめとする外部のライブラリも、Debug、Releaseの2種類の設定しか対応していないためです。
今回は外部のライブラリはReleaseを参照するようにPATHを追加します。

2-1. Header Search PathsにPATHを追加

  • TARGETS > アプリ名 > Build Settings > Search Paths > Header Search Pathsを開く。
  • Stagingの値に$(BUILD_DIR)/Release-$(PLATFORM_NAME)/includeをnon-recursiveで追加。
  • 上記と同様の修正をアプリ名Testsにも行う。
スクリーンショット 2020-01-10 0.41.52.png

2-1. Library Search PathsにPATHを追加

  • Header Search Pathsのすぐ下にあるLibrary Search Pathsを開く。
  • Stagingの値に$(BUILD_DIR)/Release-$(PLATFORM_NAME)をrecursiveで追加。
  • 上記と同様の修正をアプリ名Testsにも行う。
スクリーンショット 2020-01-10 0.42.19.png

同様の修正をTARGETS > アプリ名Testsにも行います。

3. 環境ごとにアプリ名とバンドル名を変更する

同一端末にアプリを共存させるためには、バンドル名が異なっている必要があります。
アプリ名も環境ごとに変更した方が、混乱せずに済むと思いますので、修正します。

3-1. ユーザー定義変数を設定する

  • TARGETS > アプリ名 > Build Settingsの「+」をクリック。
  • Add User-Defined Settingをクリック。
  • BUNDLE_IDENTIFIER_SUFFIXDISPLAY_NAME_PREFIXを追加(名前は任意で構いません)。
  • 各Configurationごとに、以下のキャプチャ画像のように設定します。
スクリーンショット 2020-01-10 0.56.39.png

3-2. バンドル名、アプリ名にユーザー定義変数を追加

  • TARGETS > アプリ名 > Info > Custom iOS Target Propertiesを開く。
  • Bundle identifierの値を$(PRODUCT_BUNDLE_IDENTIFIER)$(BUNDLE_IDENTIFIER_SUFFIX)に設定する。
  • Bundle display nameを$(DISPLAY_NAME_PREFIX)アプリ名に設定する。
スクリーンショット 2020-01-10 1.05.33.png

4. 端末にインストールする

  • macにiPhoneを接続しアプリをビルドします。
  • Edit Scheme... > Build ConfigurationにStagingが増えていますので、適宜変更してビルドしてください。
  • Debugビルドを実行するとアプリ名にDevが追加されたものが、Stagingビルドを実行するとStgが追加されたものがインストールされます。
  • Releaseビルドは今までと同じように、アプリ名に何も追加されずインストールできます。
4
2
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?