iOS上でアプリのデバッグビルドとリリース版と共存させたかったので Post-Release Development Bundle Identifiers and Display Names を参考にして、ビルドの構成でアプリのIDや名前を変えるようにしてみた。
これは Build identifier
や Bundle display name
がビルドの構成で設定を分けらないので、別のビルド構成で分けられる変数に依存させるという手法。
例えば Bundle identifier
の example.com.${PRODUCT_NAME:rfc1034identifier}
を
example.com.${PRODUCT_NAME:rfc1034identifier}${BUNDLE_IDENTIFIER_SUFFIX}
Bundle display name
の ${PRODUCT_NAME}
を
${PRODUCT_NAME}${BUNDLE_DISPLAY_NAME_SUFFIX}
のようにそれぞれ ${BUNDLE_IDENTIFIER_SUFFIX}
と ${BUNDLE_DISPLAY_NAME_SUFFIX}
を追加する。
次にTARGETのBuild Settingsで Add Build Setting
を押して、User-Defined Settings
として BUNDLE_IDENTIFIER_SUFFIX
と BUNDLE_DISPLAY_NAME_SUFFIX
を追加する。
あとはRelease構成の設定は空にして、Debug構成で好きな値を入れればいい。上記の例ではBundle identifierは .debug
、Bundle display nameには D
を追加している。
Display Nameがギリギリの長さの場合は、語尾につけるSuffixが入らないこともあるので BUNDLE_DISPLAY_NAME_PREFIX
にして先頭につけてみたり、そもそも BUNDLE_DISPLAY_NAME
にしてそれぞれ名前をつけるという方法も有効となる。
ただしDisplay NameについてはInfoPlist.stringsで CFBundleDisplayName
をローカライズするとそちらが優先されてしまうため注意。