Генерируем номер версии и билда на иконке iOS приложения

от автора

В процессе разработки приложение тестируется, и бывает, что нужно знать, какая версия и с каким номером сборки у тестировщика/другого участника процесса стоит приложение. Например, баг уже исправлен, а человек новый билд ещё не поставил и сетует, что ничего не исправлено.

Зачастую эту информацию прячут где-нибудь, например, в приложении Яндекс.Маркет, нужно ткнуть в раздел Кабинет и выбрать пункт «О приложении»:

Пример

Для удобства (или потому, что этот экран ещё не готов), можно вынести эту полезную информацию прямо на иконку приложения.

1. Ставим необходимые пакеты из Homebrew

brew install imagemagick brew install ghostscript 

2. Открываем наш проект в Xcode, открываем наш Images.xcassets, выбираем AppIcon и смотрим, где лежат и как называются файлы с иконками:

Видим имена файлов, запоминаем:

В моём случае я буду затрагивать только иконки для Retina-айфонов.

3. Открываем Xcode, идём в настройки нашего таргета в раздел Build Phases, добавляем New Run Script Phase:

4. Вставляем в блок Run Script код:

# если у нас релизная сборка, то нам нужна обычная иконка if [ $CONFIGURATION = "Release" ]; then return fi  # номер версии version=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${INFOPLIST_FILE}"` # номер билда build=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${INFOPLIST_FILE}"` # если нужно, можно взять имя ветки из git branch=`git rev-parse --abbrev-ref HEAD`  # функция генерации иконки function processIcon() {     export PATH=$PATH:/usr/local/bin     base_file=$1     target_icon_name=$2     base_path=`find ${SRCROOT} -name $base_file`          if [[ ! -f ${base_path} || -z ${base_path} ]]; then     return;     fi          target_file=`echo $target_icon_name | sed "s/_base//"`     target_path="${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/${target_file}"          width=`identify -format %w ${base_path}`          echo $target_path     echo $target_file          convert -background '#0008' -fill white -gravity center -size ${width}x40 -pointsize 26\     caption:"${version} (${build})"\     ${base_path} +swap -gravity south -composite ${target_path} }  # запускаем генерацию processIcon "ewrw_120-1.png" "AppIcon60x60@2x.png" processIcon "ewrw_180.png" "AppIcon60x60@3x.png" 

Готово. Когда проект собирается, если иконки приложения лежат в Images.xcassets, то внутри file.app они имеют после билда имена вида AppIcon60x60@2x.png, AppIcon60x60@3x.png и т.д. Эти то имена и испльзуются в последних 2 строчках. Нужно просто подставить имена файлов ваших иконок.

В результате, когда мы собираем дебажный билд, иконка подменяется новой, с наложенным внизу номерм версии и номером билда:

Надеюсь, кому-то такая мелочь тоже будет полезна.

P.S.
Информацию взял и немного допилил отсюда (там для варианта, когда ассеты не используются).
Полезное (в том числе и в комментах): Автоматическое увеличение номера сборки в Xcode

ссылка на оригинал статьи http://habrahabr.ru/post/262667/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *