中のInfo.plistを変更:のプロパティの変更 のiOS:私は次の操作を実行しようとしているビルドフェーズ
- をプレーンテキストファイルを開いて、テキストを読み値info.plistを手順1で取得した値に設定します。
このためのシェルスクリプトを作成できますか?
誰かがこれを達成するために私を導くことができれば素晴らしいことでしょう。
中のInfo.plistを変更:のプロパティの変更 のiOS:私は次の操作を実行しようとしているビルドフェーズ
このためのシェルスクリプトを作成できますか?
誰かがこれを達成するために私を導くことができれば素晴らしいことでしょう。
はいできます。私は3つのステップでそれを行います:
@PeyloWはこれを行う方法の1つを提供します。もう一つの方法は、実行スクリプトビルドステップを追加することです。そのステップでは、Info.plistを書き直すことができます。私はこのことをいつも行い、宗教改革を設定する。
スクリプトをファイルに入れて、スクリプト実行フェーズに. myscript.sh
と入力することをおすすめします。これは、スクリプト全体を直接Xcodeに入れるよりも、理解して維持する方が簡単です。
+1スクリプトを別のファイルに入れます。 私はplistファイルも書き直していました。しかし、そうすることで、ソース管理のplistファイルを不必要に修正する傾向があります。そこで私はenv-variableソリューションに変更しました。 – PeyloW
env変数の解決策はいいですし、別のバージョン管理スクリプトを作成した場合、簡単にするためにそのアプローチに切り替えることができます。スクリプトはより柔軟です。 –
私は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
を(Info.plist
は、ターゲットの場所にコピーされていないので、Xcodeの6から始まる、あなたが後にコピーバンドルのリソースの位相をこのを実行する必要があることに注意してください)そして、PlistBuddyは失敗します。
編集01/17:不要なコピーや署名を避けるために更新されました。本当に何かが変わらない限り、Info.plistに触れたくはありません。そうしないと、Xcodeはそれを(したがってターゲットも)変更して扱います。以前の値CFBundleVersion
をチェックすると、ビルドが大幅に高速化され、noopビルドで数秒の節約になりました。
私のスクリプトは通常のビルドではうまくいったが、アーカイブビルドでは失敗した理由は分かりませんでした。バンドルリソースのコピーの後に実行する必要があります。ありがとうございました! –
ありがとうございます!しかし、この段階でファイルを開いてそこからテキストを読むにはどうすればいいですか? – Mithin
@ミチン - シェルスクリプトを記述する言語に完全に依存します。 – PeyloW
キーがブール値の場合はどうなりますか?それは環境変数名プレースホルダを受け入れません。 –