Автоматическое управление версиями с помощью agvtool - PullRequest
0 голосов
/ 07 ноября 2019

Xcode 11 изменил способ обработки версий.

До сих пор у меня было две цели, Dev & Prod, каждая с отдельной версией. Версия Prod будет полностью ручной, Dev будет автоматизирован:

  • Во время сборки будет запускаться скрипт, который затем будет получать теги git. Один тег будет содержать информацию о последней версии Dev. Если он более новый, он будет обновлять версию внутри Info.plist только для цели Dev
  • Когда Dev будет развернут с использованием скрипта (создать ipa, подать в отставку для внутреннего распространения, загрузить), версия сборки будеттогда будет увеличено. Удаленный тег, содержащий информацию о версии, будет затем обновлен

Таким образом, каждая версия разработчика будет автоматически синхронизирована, и управление несколькими сборками будет легко. Prod обновляется относительно редко, поэтому им можно управлять вручную.

Однако в Xcode 11, когда версия (или сборка) обновляется на вкладке General, записи в Info.plist заменяются $(CURRENT_PROJECT_VERSION) и *Вместо них используются 1015 * и Current Project Version и Marketing Version во вкладке настроек сборки.

До сих пор я использовал бы PlistBuddy для чтения и обновления версий внутри Info.plist, но из того, что понимаете сейчасЯ должен был бы использовать agvtool. Тем не менее, есть две проблемы с ним:

  • Если он запускается как фаза запуска сценария, он вызывает отмену процесса сборки
  • Он не может обрабатывать отдельные версии для двух целей(поэтому я не могу просто автоматически управлять Dev, оставляя Prod в покое)

Я знаю, что теоретически я все еще могу использовать Info.plist для управления версиями, но в тот момент, когда кто-то меняет версию вручную на вкладке Общие,все будет испорчено (из опыта я знаю, что это произойдет).

У меня есть два вопроса:

  • Правильно ли мое понимание процесса?
...