iPhoneアプリ開発でBundle IDを書き分けてビルドする方法

iPhoneアプリ開発でBundle IDを書き分けてビルドする方法

  • このエントリーをはてなブックマークに追加

遅ればせながら、あけましておめでとうございます、セイカイです。
今年はキャッチー記事を書かないとねと思いつつ、新年一発目からすっげー小ネタになりますがお許し下さい。

開発・STG・本番ごとのBundle IDの変更は手間

iPhoneアプリの開発でAPI等サーバーサイドが開発/STG/本番と分かれている様なケースってありますよね。
この場合、端末内にそれぞれのアプリがインストールされていると確認が楽ですね。

ただし、通常同一のBundle IDですと同じアプリになっていまします。

毎回Bundle IDを変更するのも手間ですねってことで手順化することを考えてみます。

手順

ビルドはxcodebuildコマンドを使います。
Bundle IDはinfo.plistで制御されるので処理は下記の様になります。

  1. Info.plistの書き換え
  2. xcodebuildでビルド
  3. xcrunでパッケージング
  4. Info.plistを元に戻す

コード

とりあえずざっくりですがコードを書いてみます。
今回は固定でBuindle IDのプレフィックス部分に「.adhoc」とい文字を足す様にしています。

#!/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

はい簡単ですね。
もっと汎用的にしたい場合は、一部の値を引数として処理する等にすれば良いと思います。

その他

プリプロセッサマクロの書き分けは下記等に記載されているようにGCC_PREPROCESSOR_DEFINITIONSを設定してやれば良いでしょう。

http://stackoverflow.com/questions/2708380/xcodebuild-how-to-define-preprocessor-macro

まとめ

ちょっとした処理でも繰り返し行うようなものは手順化しておくと楽が出来るかと思います。
日々の業務の中で気を使えると良いかもしれませんね。

  • このエントリーをはてなブックマークに追加

記事作成者の紹介

セイカイ(フロントエンジニア)

新規事業推進部のセイカイです。猫を飼い始めて幸せな毎日を送っています。

関連するSONICMOOVのサービス

フロントエンドエンジニア募集中!

×

SNSでも情報配信中!ぜひご登録ください。

×

SNSでも
情報配信中!
SONICMOOV Facebookページ SONICMOOV Twitter
フロントエンドエンジニア募集中!

新着の記事

mautic is open source marketing automation