Номер сборки infoDictionary не синхронизирован с Plist - PullRequest
2 голосов
/ 10 ноября 2010

Я следовал этому руководству по реализации номеров сборок в проекте XCode iPhone ( guide ).Я попробовал это, и я получаю неправильный номер сборки, когда NSLogging.Он не обновляется правильно и всегда стоит один или два числа за info.plist.Мне нужно, чтобы это был тот же номер.Кто-нибудь знает, почему это происходит?

т.е. "[[[[NSBundle mainBundle] infoDictionary] objectForKey: @" CFBuildNumber "]" "не совпадает с CFBuildNumber для plist.

Сценарий установлензапустить сначала, прежде чем копировать ресурсы пакета и все.Это выходные данные и номера info.plist, которые я получаю:

Версия приложения: 1.0 Номер сборки: 52 Дата сборки: среда, 10 ноября 15:10:05 CET 2010
(info.plist - номер сборки:54 и дата: ср 10 ноя 15:10:43 CET 2010)

Версия приложения: 1.0 Номер сборки: 54 Дата сборки: ср 10 ноя 15:10:43 CET 2010
(info.plist isномер сборки: 55 и дата: ср 10 ноября 15:12:54 CET 2010)

Версия приложения: 1.0 Номер сборки: 54 Дата сборки: ср 10 ноя 15:10:43 CET 2010
(информация.plist - номер сборки: 56 и дата: среда, 10 ноября, 15:13:49 CET 2010)

Версия приложения: 1.0 Номер сборки: 56 Дата сборки: среда, 10 ноября 15:13:49 CET 2010
(info.plist - номер сборки: 57 и дата: среда, 10 ноября, 15:14:46 CET 2010)

Кажется, этот шаблон повторяется повсюду.Таким образом, продолжение будет 56 (реальное 58), 58 (реальное 59), 58 (реальное 60), 60 (реальное 61), 60 реальное (62), 62 (реальное 63) и т. Д. И т. Д.

Сценарий (который запускается раньше всего):

#!/bin/bash
# Auto Increment Version Script
buildPlist="Project-Info.plist"
CFBuildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBuildNumber" $buildPlist)
CFBuildNumber=$(($CFBuildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBuildNumber $CFBuildNumber" $buildPlist
CFBuildDate=$(date)
/usr/libexec/PlistBuddy -c "Set :CFBuildDate $CFBuildDate" $buildPlist

1 Ответ

3 голосов
/ 17 ноября 2010

Поскольку Info.plist проекта обрабатывался до фазы «Выполнить сценарий». Смотрите окно «Результаты сборки» в XCode. Чтобы решить эту проблему, вы должны 1) Создайте новую цель с типом «Run script only» и настройте ее для обновления номера версии 2) Создайте новую цель с типом «Aggregate» и добавьте к ней цель «Обновление версии» и цель «Ваш продукт».

Таким образом, при создании цели «Aggregate» на первом этапе обновляется версия, а на втором - ваш продукт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...