iPhoneアプリ開発でBundle IDを書き分けてビルドする方法
遅ればせながら、あけましておめでとうございます、セイカイです。
今年はキャッチー記事を書かないとねと思いつつ、新年一発目からすっげー小ネタになりますがお許し下さい。
開発・STG・本番ごとのBundle IDの変更は手間
iPhoneアプリの開発でAPI等サーバーサイドが開発/STG/本番と分かれている様なケースってありますよね。
この場合、端末内にそれぞれのアプリがインストールされていると確認が楽ですね。
ただし、通常同一のBundle IDですと同じアプリになっていまします。
毎回Bundle IDを変更するのも手間ですねってことで手順化することを考えてみます。
手順
ビルドはxcodebuildコマンドを使います。
Bundle IDはinfo.plistで制御されるので処理は下記の様になります。
- Info.plistの書き換え
- xcodebuildでビルド
- xcrunでパッケージング
- Info.plistを元に戻す
コード
とりあえずざっくりですがコードを書いてみます。
今回は固定でBuindle IDのプレフィックス部分に「.adhoc」とい文字を足す様にしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
[sourcecode lang="bash"]#!/bin/bash #Project名==Target名 PROJECT_NAME="ProjectName" #BuindleIDのプレフィックス部分 PREFIX="com.sample" #Distribution用のID IDENTITY="iPhone Distribution: Hoge Fuga" #埋め込むプロファイル PROVISION_NAME="BuildTestAdhoc.mobileprovision" #plistを変更 sed -i .bk -e "s/${PREFIX}/${PREFIX}.adhoc/g" ${PROJECT_NAME}/${PROJECT_NAME}-Info.plist #build xcodebuild -configuration Release -project "${PROJECT_NAME}.xcodeproj/" -target "${PROJECT_NAME}" CODE_SIGN_IDENTITY="${IDENTITY}" clean build #provisioning xcrun -sdk iphoneos PackageApplication `pwd`/build/"Release-iphoneos/${PROJECT_NAME}.app"\ -o `pwd`/build/"Release-iphoneos/${PROJECT_NAME}.ipa" --embed "${PROVISION_NAME}" #plistを元に戻す mv -f ${PROJECT_NAME}/${PROJECT_NAME}-Info.plist.bk ${PROJECT_NAME}/${PROJECT_NAME}-Info.plist[/sourcecode] |
はい簡単ですね。
もっと汎用的にしたい場合は、一部の値を引数として処理する等にすれば良いと思います。
その他
プリプロセッサマクロの書き分けは下記等に記載されているようにGCC_PREPROCESSOR_DEFINITIONSを設定してやれば良いでしょう。
http://stackoverflow.com/questions/2708380/xcodebuild-how-to-define-preprocessor-macro
まとめ
ちょっとした処理でも繰り返し行うようなものは手順化しておくと楽が出来るかと思います。
日々の業務の中で気を使えると良いかもしれませんね。