3
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.

iOS開発でDEV環境を構築する

Last updated at Posted at 2020-04-04

iOSアプリを運用していくにあたって、アプリの配布やサーバーサイドとの連携は必須となります。
その際にクライアント側でDevやStaging、Releaseなど環境を使い分けたいケースは必ず出てきます。
今回はXcode上でDev環境を作る一連の流れをまとめてみました。
複数の環境を追加したい場合もこの流れで同じことを繰り返していけば良いので、簡単です。

この記事ではConfigrationを変更することで、DEV環境を作ります。
他にもTargetsを増やす方法やxcconfigファイルを使用する方法もあるので、チェックしてみてください。

ProjectのConfigurationのNameをDebug -> Developに変更

単純にリネームです。
3つ以上環境使い分けたいケースでは、ここで追加をしてください。

スクリーンショット 2020-03-30 22.19.53.png

Preprocessor Marcos(Project -> Build Setting)で、DEBUG=1 -> Develop=1に変更

スクリーンショット 2020-03-30 22.23.40.png

Other Swift flagの設定

#if DEVELOP とかできるようにするために行う。
-D <flag名>の形式で設定する。
複数やる場合は、-D <flag名> -D <flag名>

スクリーンショット 2020-03-30 22.30.10.png

DEV sheme作成

sheme選択画面でDEV版が選べるようになります。
↓こんな感じ。

スクリーンショット 2020-03-30 22.43.06.png

Manage schemeを選択。

該当プロジェクトを選んで、Editボタンをクリック。
スクリーンショット 2020-03-30 22.35.24.png

Duplicate schemeをクリックして、既存のshemeを複製。
スクリーンショット 2020-03-30 22.35.40.png

名前がcopy of <プロジェクト名>となっていると思うので、本番と見分けがつくように名前を設定。

スクリーンショット 2020-03-30 22.38.32.png

Run, Test, Profile, ArchiveのBuild configurationをチェックする。
今回はRun, ArchiveのときにDevelopを向いてるようにしました。
スクリーンショット 2020-03-30 22.39.43.png

Product Bundle Identifierを変更
スクリーンショット 2020-03-30 22.50.54.png

以上の作業で基本的なDEV環境作成はできていて、別々のアプリとして認識することが可能となりました。
次からは見た目もわかりやすくしていく作業です。

Product nameを変更

ここでアプリのアイコンの名前を変更することができます。
スクリーンショット 2020-03-31 4.11.03.png

Targets -> Build Setting -> Product Nameから$(TARGET_NAME)DEVに変更。

スクリーンショット 2020-03-30 23.20.33.png

アプリのアイコンを変更

まずはDev用のAppIconを作成し、AppIcon_devと命名します。
スクリーンショット 2020-04-04 22.26.39.png

Targets -> Build Settings -> Asset Catalog App Icon Set Nameを開き、Developのところを、AppIcon_devとします。
スクリーンショット 2020-04-04 22.28.55.png

アイコンが切り替わりました!
スクリーンショット 2020-04-04 22.31.34.png

FirebaseのDev版作成

iOS開発において、分析や配布のためにFirebaseを使用しているケースは多々あると思います。
DEV環境を作った際にはFirebaseでもその対応をする必要があります。

まずはFirebase上で、DevとReleaseでそれぞれプロジェクトを作成します。
その際にどちらもGoogleService-info.plistファイルを保存しておきます。
スクリーンショット_2020-04-04_22_09_01.png

こんな感じで名前を変えて、配置します。
スクリーンショット 2020-04-04 22.12.59.png

Targets -> Build Phase -> 左上のプラスボタンから新規でRun Scriptを作成します。
CONFIGURATIONに応じて、参照するGoogleService-Inforファイルを切り替えて、BUILT_PRODUCTS_DIRディレクトリにコピペしています。

if [ "${CONFIGURATION}" == "Release" ]; then
cp "${PROJECT_DIR}/${PROJECT_NAME}/GoogleService/GoogleService-Info.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist"
else
cp "${PROJECT_DIR}/${PROJECT_NAME}/GoogleService/GoogleService-Info-Develop.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist"
fi
スクリーンショット 2020-04-04 22.32.38.png

ハマったところ

アプリ起動後、画面を読み込む部分でクラッシュしました。
原因はDEV環境内で、Storyboard内のUIViewControllerのModuleが本番環境を向いていることでした。
Inherit Module From Targetにチェックをつけると、Moduleを指定しなくても、よしなにやってくれるので、クラッシュする場合は該当のVCのこの箇所をチェックすると良いです。
参考
スクリーンショット 2020-03-31 4.15.44.png

error: Could not get GOOGLE_APP_ID in Google Services file from build environment

これはFabric初期化のタイミングでGoogleService-Info.plistが生成されていないのが原因です。
Fabric導入した際に、"${PODS_ROOT}/Fabric/run"をRun Scriptとして追加したと思いますが、Firebase ConfigurationのScriptはそれより前に実行されるようにしてください。
スクリーンショット_2020-04-05_1_13_06.png

参考リンク

https://qiita.com/Todate/items/a2e6a26731c79bd23e02#%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3
https://qiita.com/KazaKago/items/aacf6eaec65b6d4244d0

3
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
3
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?