追加 iOS:ビルド段階でinfo.plistを変更する




xcode 環境 切り替え (4)

@PeyloWはそれを行うための一つの方法を提供します。 もう一つの方法は、実行スクリプトビルドステップを追加することです。 そのステップでは、Info.plistを書き直すことができます。 私はこのことをいつも行い、宗教改革を設定する。

私はあなたのスクリプトをファイルに入れてから置くことを推奨します. myscript.sh スクリプト実行フェーズで. myscript.shを実行します。 これは、スクリプト全体を直接Xcodeに入れるよりも、理解して維持する方が簡単です。

私は次のことをしようとしています:

  1. ビルド段階では、プレーンテキストファイルを開き、テキストを読み込みます
  2. info.plistのプロパティの値を手順1で取得した値に変更します。

このためのシェルスクリプトを書くことはできますか?

誰かがこれを達成するために私を導くことができれば素晴らしいことでしょう。


私はinfo.plistのフィールドにビルド番号を入れるスクリプトファイルを持っています。 プロジェクトのinfo.plistにプレースホルダーのテキストを置いて、スクリプトで置き換えます。 リリースビルドのビルド番号をインクリメントします。 開発ビルドでは、開発ビルドだと言っているだけです。

   if [ "$BUILD_STYLE" = "Release" ] 
   then
   if [ ! -f build-number ]; then
        echo 0 > build-number
   else
        expr  `cat build-number` + 1 > build-number.new
        mv build-number.new build-number
   fi

    perl -pi -e s/BUILD_NUMBER_PLACEHOLDER/`cat build-number`/ $BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app/Contents/Info.plist
   else
    perl -pi -e s/BUILD_NUMBER_PLACEHOLDER/`echo Development`/ $BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app/Contents/Info.plist
   fi

おそらく最も簡単な方法はPlistBuddyを使うことでしょう。 私はこのようなスクリプト実行フェーズを持っています:

BUILD_NUMBER=`git rev-list HEAD --count`
INFO_PLIST="$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH"
if [ -f "$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH" ] ; then
    oldversion=`/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "$INFO_PLIST"`
fi
if [ "$BUILD_NUMBER" != "$oldversion" ] ; then
    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "$INFO_PLIST"
fi

(Xcode 6 以降は、Bundle Resourcesフェーズのにこれを実行する必要があります。これはInfo.plistがそれまでターゲットの場所にコピーされておらず、PlistBuddyが失敗するためです)。

Edit 01/17:ターゲットの不要なコピーや署名を避けるために更新されました。 本当に何かが変わらない限り、Info.plistに触れたくはありません。そうしないと、Xcodeはそれを(したがってターゲットも)変更して扱います。 以前の値をチェックするCFBundleVersionはビルドを大幅に高速化することができます。


はい、できます。 私は3つのステップでそれを行うだろう:

  1. 最初のビルドフェーズの前に実行されるシェルスクリプトを作成します。 このスクリプトで環境変数を設定しましょう。
  2. プロジェクトの"Info.plistでビルド設定を展開"を有効にします。
  3. ${MY_COOL_SETTING}ようなplistファイルの環境変数を使用してください。




build