7

デバイス設定に表示される設定バンドル内にRoot.plistを定義しました。ここで、プロジェクトを構築する環境の種類に基づいて、さまざまなオプションを表示したいと思います。

XCodeでTESTスキームとPRODスキーム(異なるビルド構成)を定義しましたが、これらのビルド構成に対してRoot.plistを異なる方法で定義する必要があります。これはどのように行うことができますか?

2つのplistを定義して、それらを異なるビルド構成にリンクすることはできますか、または選択したビルド構成またはスキームに基づいて、コンパイル時にroot.plistを変更することはできますか。

お知らせ下さい。

4

5 に答える 5

11

私はそれをこのように解決しました:

1)2つの設定バンドル(1つはテスト用、もう1つは製品用)をプロジェクトに追加し、それらをターゲットに追加します。

2)Runnerターゲットに実行スクリプトを追加して、必要な設定バンドルをビルドファイルに選択的にコピーします。

if [IS_PRODUCTION]; then
cp -r ${PROJECT_DIR}/Settings/Prod/Settings.bundle ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
fi

if [IS_TEST]; then
cp -r ${PROJECT_DIR}/Settings/Test/Settings.bundle ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
fi

3)完了したら、さまざまなスキームで実行して、目的の結果を確認します。

于 2012-07-06T23:12:41.687 に答える
10

@Abhinavと同様のことを行いますが、実行スクリプトを使用する代わりに、ファイルインスペクターの[ターゲットメンバーシップ]セクションを使用して、どのターゲットがどのSettings.bundleを使用しているかを判断します。

設定バンドルターゲットメンバーシップ

于 2012-12-21T21:38:49.543 に答える
3

@abhinavアプローチを使用しましたが、プロジェクトのニーズに合わせて少し変更しました。2つのターゲットがありますが、どちらもから個別のアプリケーションを構築するために使用されます。

手順

プロジェクトのディレクトリ内のファイルシステムで、フォルダ構造を作成します。

<project_folder>/Settings/debug
<project_folder>/Settings/production

プロジェクトで次のグループを作成します。

Settings
  debug
  production

を作成し、デバッググループSettings.bundleに追加して、デバッグフォルダに保存します。(ターゲットに追加しないでください)

.plist最も幅の広い設定ページが表示されるように編集します(通常、デバッグビルドにはより多くの設定があります)。

バンドルをデバッグフォルダーから本番フォルダーにコピーします

プロジェクトの本番フォルダーSettings.bundleから本番グループに追加する(ターゲットには追加しないでください)ので、この構造になります

プロジェクトグループの構造

どのターゲットにもsが追加されていないことを確認してくださいSettings.bundle

.plistAppStoreビルドで出荷したくない設定項目を本番環境から削除します。

バンドルリソースのコピーフェーズの後にスクリプトの実行フェーズを追加する

if [ "${CONFIGURATION}" = "Release" ]; then
cp -r ${PROJECT_DIR}/Settings/production/Settings.bundle "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app"
fi

if [ "${CONFIGURATION}" = "Debug" ]; then
cp -r ${PROJECT_DIR}/Settings/debug/Settings.bundle "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app"
fi

注:リリースとデバッグの2つのビルドスキームがあります。ターゲットの名前にスペースが含まれているため、パスを引用符で囲みました。

于 2016-05-26T16:12:34.370 に答える
1

異なるビルドで設定バンドルなどのアイテムを条件付きでバンドルする唯一の方法は、ターゲットを複製することです。適切なバンドルを適切なターゲットに追加するだけで、すべてのコードを同じに保つことができます。違いますが、長期的にははるかにうまく機能するはずです。

于 2012-07-06T20:42:10.037 に答える
0

簡単なアプローチは、

1-既存のターゲットのコピーを使用して別のターゲットを作成します。2-新しいターゲットビルドフェーズでelif[${CONFIGURATION} == "Release"]; 次に、cp -r $ {PROJECT_DIR} /Settings/ReleaseHHAppStore/Settings.bundle $ {BUILT_PRODUCTS_DIR} / $ {PRODUCT_NAME} .app fi

これにより、必要に応じて、よりカスタマイズ可能な設定を行うことができます

于 2017-08-03T09:41:05.290 に答える