12

構成ごとに異なる plist を使用したセットアップを使用します。このように: Target-Info-Dev.plist、Target-Info-Beta.plist...

このようにして、構成に独自の CFBundleDisplayName を持たせることができ、デバイスのアプリ名でビルドを区別できます。このように: 「DEV Appname」、「BETA Appname」...

ただし、アプリ名をローカライズする必要があります。これは、ターゲットごとにローカライズされた InfoPlist.strings を作成することで実現しました。

"CFBundleDisplayName" = "<localized-appname>";
"CFBundleName" = "<localized-appname>";

しかし、CFBundleDisplayName はTarget-Info-[Configuration].plistから派生しなくなったため、異なる構成の app-name を区別することはできません。

同じアプリの異なるブランドに対してもいくつかのターゲットがあることに注意する必要がありますが、ターゲットごとに個別の InfoPlist.strings を用意することで、すでにそれが機能していることに注意してください。

ローカライズされたアプリ名と構成ベースのアプリ名の両方を達成する方法を知っている人はいますか?

4

2 に答える 2

11

より良い解決策

  1. Info.plistを編集し、CFBundleDisplayNameの値を次のような名前の変数に設定します$(MY_DISPLAY_NAME)

ここに画像の説明を入力

  1. プロジェクトまたはターゲットの「ビルド設定」タブを開き、ユーザー定義セクションの下に名前が付けられたキーを追加します(このセクションを見つけるには、一番下までスクロールする必要があります)。次に、新しく追加されたキーを展開し、各構成に任意の名前を設定しますあなたの好きなように。MY_DISPLAY_NAME

ここに画像の説明を入力

プロジェクトをビルドすると、Info.plist 内のすべての変数がその値に置き換えられます。

解決策は、元の解決策よりもはるかに簡単です。

元のソリューション

私のプロジェクトでも同じ要件がありましたが、あなたの質問を見つけて、ついに解決しました。 プロジェクトのスキームを編集し、アクション前およびアクション後のスクリプトを追加して、変更を実行します。このような、

ステップ 1. Build の Pre-actions でアプリ名を変更する

str=""
if [ "${CONFIGURATION}" == "Debug" ];then
    str="dev"
elif [ "${CONFIGURATION}" == "AdhocDevelopment" ];then
    str="dev"
elif [ "${CONFIGURATION}" == "AdhocDistribution" ];then
    str="adhoc"
elif [ "${CONFIGURATION}" == "DailyBuild" ];then
    str="rdm"
fi
perl -pi -e "s/appName[^<]*/appName${str}/g" ${PROJECT_DIR}/smd/Info.plist

ここに画像の説明を入力

ステップ 2. Build の Post-actions でアプリ名を復元する

perl -pi -e "s/appName[^<]*/appName/g" ${PROJECT_DIR}/smd/Info.plist
echo ${PROJECT_DIR}/${INFOPLIST_FILE} > ~/tmp.txt; rm -f ~/tmp.txt

説明するもの: Debug/AdhocDevelopment/AdhocDistribution/DailyBuild はプロジェクトの構成名です。${CONFIGURATION} は Xcode によって事前定義されています。perl は、すべての Mac OS X にプリインストールされている awk や sed よりも推奨されます。

ちなみに、私が行ったことは、Info.plist の appName を変更することです。infoPlist.strings を変更できます。このように、必要な Info.plist ファイルは 1 つだけです。

于 2016-05-06T08:36:36.237 に答える