[flutter ios]DebugとReleaseを共存できるようにする(別アイコンで表示させる)

debugとReleaseでアイコンを分けるというのはアプリ開発において必須でしょう。特に複数人が絡むプロジェクトでは。iOSアプリに必須な設定の証明書であったりといった部分の説明は省いています。

まずはflutterプロジェクト/ios/runnerをXCodeで開きましょう。

Automaticallyにチェックを入れ、適宜最適なものが選択されている状態にしてください。

その後、AllになっているタブをDebugに切り替え、BundleIdentifierの末尾に「.debug」を追加します。
また、 BuildSettingsタブに切り替え、プラスボタンを押してAdd UserDefined settingを選択。
PRODUCT_NAME_SUFFIXを追加したらメニューを展開し、debugに「debug」と記述してください。

そして[target]-[runner]-[info]-[Bundle display name]を、「アプリ名 – ${PRODUCT_NAME_SUFFIX}」としておきます。

Firebaseを使っている場合

続いて、Firebaseの設定ファイル(googleService-info.plist)をデバッグ用にも準備する必要があります。既存のプロジェクトに、.debugを追加したIDでアプリを追加し、設定ファイルをダウンロードしてください。そして、既に導入してある方の設定ファイルは~info-release.plist、debug用は~info-debug.plistと分けてそれぞれプロジェクトに追加してください。

その後、ビルドの種類で読み込む設定ファイルを変更するように設定します。[Build phase]の[RunScript]に以下を追加。

if [ "${CONFIGURATION}" == "Debug" ]; then
  cp "${PROJECT_DIR}/${PROJECT_NAME}/GoogleService-Info-debug.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist"
else
  cp "${PROJECT_DIR}/${PROJECT_NAME}/GoogleService-Info-release.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist"
fi

これでDebugの時のみ違う設定ファイルを読んでくれるようになりました。

また、FirebaseAuthentication を使っている場合は、URL Schemeを追加しないといけません。以下記事を参考に、スキームを追加するところだけ作業してください。

その他

また、ついでに以下も設定。

最新版Xcode(12)だと9以下はビルドできないとのこと。エラーが出てしまうので変更しておきます。

終わり

以上で設定は終わりです。実際にvscode等でデバッグビルドしてみてください。特に自分のような個人開発だとプロジェクト開始時にはこういった部分がおざなりになりがちですが、リリースを見据えると必須な作業なので早めに行っておきましょう。