- PVSM.RU - https://www.pvsm.ru -
При передаче приложения тестировщикам или конечным пользователям не стоит забывать увеличивать версию проекта / номера сборки для того, чтобы в будущем можно было без проблем идентифицировать установленное приложение.
Память, как известно, бывает подводит. Здесь на помощь приходит простой и действенный чудо-рецепт автоматической установки номера сборки проекта.
Готовый проект с кратким описанием доступен на github: github.com/eshurakov/XcodeAutoBundleVersion [1]
Для установки версии приложения в распоряжении разработчика имеются две переменные:
CFBundleShortVersionString | Маркетинговая версия, отображаемая в магазине приложений. Представляет собой строку, состоящую из трех чисел, разделенных точкой. Обозначает итерацию выпущенного приложения. Данную версию я всегда меняю вручную. |
CFBundleVersion | Номер сборки. Представляет собой монотонно возрастающую строку, состоящую из одного или нескольких чисел, разделенных точкой. Обозначает итерацию выпущенного или разрабатываемого приложения. |
Подбробнее можно прочитать в документации, предоставленной Apple: developer.apple.com/library/mac/#documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html [2]
Все мы пользуемся системами контроля версий при разработке, поэтому очевидным решением будет в качестве номера сборки использовать номер последней ревизии.
Номер сборки:
> git rev-list master | wc -l
> 43
Хэш коммита по номеру сборки:
> git rev-list --abbrev-commit --reverse master | sed -n '43 p'
> 5a09ebc
GIT_BRANCH="master" PREFIX="XC_" /bin/sh "${PROJECT_DIR}/Version.sh" "${PROJECT_DIR}/Version.h"
Переменные окружения, используемые скриптом:
PREFIX | Префикс сгенерированных констант, может отсутстововать. |
GIT_BRANCH | Ветка репозитория git, для которой считается номер сборки. По умолчанию «master». |
PROJECT_DIR | Путь до папки проекта. При запуске скрипта из Xcode данная переменная уже установлена. |
Пример полученного заголовочного файла:
#define XC_BUILD_NUMBER 7
#define XC_BUILD_HASH @"c2acb9b"
Мы будем использовать его для формирования Info.plist файла проекта в момент компиляции. Его также можно подключить в проект и использовать на свое усмотрение, например, выводить хэш коммита на экране «О приложении».
Preprocess Info.plist File | YES |
Info.plist Preprocessor Prefix File | Version.h |
CFBundleVersion
на XC_BUILD_NUMBER
Теперь, при каждой сборке проекта файл Version.h будет обновляться, а вместе с ним и Info.plist.
Тестовый проект на github: github.com/eshurakov/XcodeAutoBundleVersion [1]
Автор: lunatic
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/xcode/22594
Ссылки в тексте:
[1] github.com/eshurakov/XcodeAutoBundleVersion: https://github.com/eshurakov/XcodeAutoBundleVersion
[2] developer.apple.com/library/mac/#documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html: https://developer.apple.com/library/mac/#documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
[3] скрипт: https://raw.github.com/eshurakov/XcodeAutoBundleVersion/master/Version.sh
[4] Источник: http://habrahabr.ru/post/162575/
Нажмите здесь для печати.