アプリにさまざまなビルド構成(Debug、Stage、Prod)を定義し、User-Definedビルド設定を使用します。
facebookのログインやその他のものを_Info.plist
_ファイルに設定するには:
このシナリオでは、$(USER_DEFINED_SETTINGS)
表記は機能します。
Googleサインインを設定しようとしたとき、追加の_.plist
_ファイル(_GoogleService-Info.plist
_)を使用する必要があり、ユーザー定義の設定は、_Info.plist
_ファイルと同じように機能しません。
カスタム_.plist
_ファイルでユーザー定義設定を使用するにはどうすればよいですか?できない場合、どうすればこれを回避できますか?
[〜#〜] not [〜#〜]使用可能ser-Defined設定custom。plistファイル。
[〜#〜] but [〜#〜]アプリをビルドするときに、カスタム.plistファイルを適切な場所にコピーできます。
src/Resources/GoogleServiceInfoPlists
)。GoogleService-Info-Debug.plist
GoogleService-Info-Stage.plist
GoogleService-Info-Prod.plist
Run Script Phase
を追加します(Xcode:Target-> Build Phases-> "+" button[左上隅])。以下のスクリプトを使用して、特定の環境の.plistファイルをメインディレクトリにコピー(置換)します(私の場合はsrc
ですが、通常はプロジェクト名です)。
cp "${SRCROOT}/src/Resources/GoogleServiceInfoPlists/GoogleService-Info-$CONFIGURATION.plist" "${SRCROOT}/src/GoogleService-Info.plist"
結果の例(ステージ環境の場合):
ファイルsrc/Resources/GoogleServiceInfoPlists/GoogleService-Info-Stage.plist
はビルド中にsrc/GoogleService-Info.plist
にコピーされます。
使用される変数/パス:
${SRCROOT}
-事前定義されており、プロジェクトの場所を指します。
$CONFIGURATION
-事前定義されています。これはビルド構成です。デフォルトでは、Debug
、Release
です。私の場合:Debug
、Stage
、Prod
。これはXcodeで変更できます:Project(ターゲットではありません!)->Info。
重要:
src/GoogleService-Info.plist
ファイル必須 Xcodeプロジェクトに追加(ビルドフェーズ->バンドルリソースのコピーs)while /src/Resources/GoogleServiceInfoPlists/GoogleService-Info-*
ファイルはそうする必要はありません。
新しい実行スクリプトを配置する必要がありますバンドルリソースのコピーの前ビルドフェーズ。そうしないと、コピーが遅すぎて、デフォルトバージョンの.plistファイルが使用されます。
新しいフォルダを作成します(例:GoogleServiceInfoPlists
)。
各構成のすべての.plist
ファイルをそこにコピーします
例えば:
GoogleService-Info-Debug.plist,
GoogleService-Info-Alpha.plist,
GoogleService-Info-Beta.plist,
GoogleService-Info-Release.plist
最後に新しいRun Script Phase
を追加します(Xcode:ターゲット->ビルドフェーズ->「+」ボタン)。
以下のスクリプトを使用して、特定の環境の.plist
ファイルをビルドディレクトリにコピーします。
脚本:
RESOURCE_PATH=${SRCROOT}/${PRODUCT_NAME}/GoogleServiceInfoPlists/GoogleService-Info-$CONFIGURATION.plist
BUILD_APP_DIR=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
echo "Copying ${RESOURCE_PATH} to ${BUILD_APP_DIR}"
cp "${RESOURCE_PATH}" "${BUILD_APP_DIR}/GoogleService-Info.plist"
PS:プロジェクトにファイルを追加する必要はありません。メインディレクトリに新しいフォルダを作成するだけです。