В процессе разработки приложение тестируется, и бывает, что нужно знать, какая версия и с каким номером сборки у тестировщика/другого участника процесса стоит приложение. Например, баг уже исправлен, а человек новый билд ещё не поставил и сетует, что ничего не исправлено.
Зачастую эту информацию прячут где-нибудь, например, в приложении Яндекс.Маркет, нужно ткнуть в раздел Кабинет и выбрать пункт «О приложении»:
![](https://habrastorage.org/files/d0f/fd1/a81/d0ffd1a8104b4f3d86ddb423d4750968.png)
Для удобства (или потому, что этот экран ещё не готов), можно вынести эту полезную информацию прямо на иконку приложения.
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/
Добавить комментарий