Подтвердить что ты не робот

Установите версию пакета Xcode на git хеш

В Xcode я хочу установить версию пакета проекта для хеша git, чтобы создать уникальную ссылку между версией и сборкой.

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

Я добавил следующее как Run Script в фазах сборки:

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion `git rev-parse --short HEAD`" *.plist

И затем я зачитал версию пакета в коде с помощью:

[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

Однако, новый номер версии не отображается в коде до следующей сборки. Я предполагаю, что это связано с тем, что файл plist уже считывается компилятором, когда выполняется мой Script.

Кроме того, поскольку plist изменяется с строкой ревизии после фиксации до git, это вызывает раздражающий diff в проекте, поэтому, возможно, я не настолько умный в конце концов.

Альтернативой было бы записать номер версии в текстовый файл (build.txt), который игнорируется git. Но мне все равно хотелось бы, чтобы номер сборки проекта следовал за git.

Кто-нибудь знает блестящий способ сделать это?

4b9b3361

Ответ 2

Вам понадобится установить PlistBuddy, чтобы использовать этот метод.

Метод, который я использую, заключается в установке script в качестве последней фазы сборки и внесении изменений в целевой каталог сборки. Другими словами:

BUILD_NUMBER=`git rev-parse --short HEAD`
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "${TARGET_BUILD_DIR}"/"${INFOPLIST_PATH}"

Таким образом, в репо значение должно быть фиктивным значением, равным 0, и оно будет перезаписываться каждый раз. Это означает, что текущий номер сборки будет доступен только после сборки.