Установите отображаемое имя пакета в строку версии через скрипт запуска в Xcode

Я пытаюсь изменить отображаемое имя пакета через скрипт запуска Xcode, если выполняется специальное условие. Пока у меня есть это:

if [ MY_CONDITION ]; then
BUNDLE_DISPLAY_NAME = ${BUNDLE_VERSION};

fi

Я получаю эту ошибку

строка 3: BUNDLE_DISPLAY_NAME: команда не найдена

Где я могу найти эти необычные имена переменных? И то, что я пытаюсь сделать даже возможно с помощью сценария?

2 ответа

Для ясности и для официального размещения комментария @trojanfoe в ответе, BUNDLE_DISPLAY_NAME не является переменной сборки. Это значение в Info.plist вашей цели. Вам нужно будет изменить его там вместо этого.

Чтобы сохранить контроль над исходным кодом в чистоте, вы должны поместить следующий сценарий после фазы Copy Bundle Resources.

if [ MY_CONDITION ]; then
  newDisplayName="${BUNDLE_VERSION}"
  command="Set :CFBundleDisplayName $newDisplayName"

  echo "Updating display name in app package to \"$newDisplayName\""
  /usr/libexec/PlistBuddy -c "$command" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"

  filepath="${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}.dSYM/Contents/Info.plist"
  if [ -f "$filepath" ]; then
    echo "Updating display name in dsym to \"$newDisplayName\""
    /usr/libexec/PlistBuddy -c "$command" "$filepath"
  fi;
fi

Удалить пробелы вокруг = условное обозначение (BUNDLE_DISPLAY_NAME=${BUNDLE_VERSION};) иначе истолковать BUNDLE_DISPLAY_NAME как отдельная команда и попробуйте выполнить BUNDLE_DISPLAY_NAME, но не нашел эту команду. Но Баш интерпретировать BUNDLE_DISPLAY_NAME=${BUNDLE_VERSION} в качестве операции присваивают значение ${BUNDLE_VERSION} с переменной BUNDLE_DISPLAY_NAME,

Другие вопросы по тегам