Как остановить Xcode 11 от изменения CFBundleVersion и CFBundleShortVersionString в $ (CURRENT_PROJECT_VERSION) и $ (MARKETING_VERSION)? - PullRequest
9 голосов
/ 04 октября 2019

Начиная с версии 11, Xcode устанавливает мое CFBundleVersion значение на $(CURRENT_PROJECT_VERSION), а мое CFBundleShortVersionString на значение $(MARKETING_VERSION) всякий раз, когда я вписываю значения версии или сборки в целевые настройки (вкладка «Общие»).

Фактическая версия и значения сборки, которые я ввожу, теперь хранятся в файле project.pbxproj. Мне не нравится или не нравится это поведение, так как я использую сценарии оболочки для изменения значений во время сборки.

Я могу вручную установить правильные значения в файле Info.plist, но как только я изменю версию или сборкучисла в настройках цели, файл Info.plist снова изменяется Xcode.

Как мне остановить Xcode 11 от этого?

Когда я изменяю свой скрипт сборки для изменения файла проектаСам Xcode немедленно отменит сборку, как только файл проекта будет изменен.

1 Ответ

1 голос
/ 15 октября 2019

Не.

Предположительно, есть причина, по которой это поведение изменилось. Если более поздние функции XCode основываются на этом поведении, все становится все более и более «сконструированным» в дальнейшем.

Вместо того, чтобы пытаться согнуть XCode, измените способ получения сценарием сборки этих значений:

Как читать текущую версию приложения в Xcode 11 с помощью скрипта

Если вам нужно манипулировать файлом project.pbxproj, это список свойств следующего стиля, который хорошо документирован. Вы можете использовать plistbuddy, который совместим с этим старым форматом. Вы также можете использовать awk с большим количеством сценариев, если у вас есть более сложные манипуляции.

Если я понимаю ваш сценарий использования, вы можете написать сценарий, который получает самые высокие номера версий с awk, а затем обновляет все более низкиеномера версий, которые можно найти в файле с sed.

...