Лучший способ увеличить номер сборки? - PullRequest
132 голосов
/ 13 февраля 2012

Я использовал сценарий оболочки как часть моего процесса сборки Xcode, чтобы увеличить номер сборки в файле plist , однако это часто приводит к аварийному завершению Xcode 4.2.1 (с ошибкой относительно цели непринадлежность к проекту; я предполагаю, что изменение файла plist каким-то образом сбивает с толку Xcode.

Сценарий оболочки сделал это так, что номер сборки увеличивается только на agvtool, если файл новее, чем файл plist (поэтому простое построение не увеличивает значение):

if [ -n \"`find ProjDir -newer ProjDir/Project-Info.plist`\" ]; then agvtool -noscm next-version -all; else echo \"Version not incremented\"; fi

Есть ли способ увеличить номер сборки (в plist файл или где-либо еще), который не нарушает XCode?

ФИНАЛЬНОЕ РЕДАКТИРОВАНИЕ : сейчас я делаю такие вещи, используя скрипт на Python, который у меня естьобнародован на github .Это не очень хорошо документировано, но не должно быть трудным для разработки.В качестве бонуса этот репозиторий также содержит полезный скрипт для автоматического объединения сторонней библиотеки в комплект приложения.

Ответы [ 21 ]

0 голосов
/ 28 июля 2014

Вот мое решение. Если вы похожи на меня: терминал дружелюбен, как рубин, как семантическое управление версиями, попробуйте это.

Создайте файл с именем Rakefile, который содержит это:

require "xcodeproj"
require "versionomy"

XCODEPROJECT = "MyProject.xcodeproj"
INFOPLISTFILE = "MyProject/MyProject-Info.plist"

$UPDATES = [:major,:minor,:tiny]
$UPDATES.each { |part|
  desc "increment #{part} part of version"
  task "increment:#{part}" do |task|
    version=`/usr/libexec/Plistbuddy -c "Print CFBundleVersion" #{INFOPLISTFILE}`.chomp
    version=Versionomy.parse(version)
    version=version.bump(part)

    # I use the same string for CFBundleVersion and CFBundleShortVersionString for now
    `/usr/libexec/PlistBuddy -c "Set :CFBundleVersion #{version}" #{INFOPLISTFILE}`
    `/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString #{version}" #{INFOPLISTFILE}`
    print "version upgraded to #{version}\n"
  end
}

Подготовить: gem install xcodeproj versionomy

Выполнить: rake increment:major или rake increment:minor или rake increment:tiny, когда вы хотите.

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