Ошибка «the code signature version is no longer supported» появляется при сборке или установке iOS-приложения, когда Xcode или система отклоняет устаревший формат цифровой подписи кода — чаще всего это происходит после обновления Xcode, перехода на новую версию iOS или при использовании старых фреймворков, собранных давно устаревшими инструментами.
Сообщение буквально означает: версия формата подписи кода, которой подписан бинарный файл, больше не поддерживается текущей системой. Проблема касается разработчиков, собирающих проекты в Xcode, а также пользователей, устанавливающих приложения через AltStore, Sideloadly или корпоративные профили. Ниже разберём, откуда берётся эта ошибка и как её устранить в каждом из сценариев.
Что означает эта ошибка
Каждое приложение для iOS и macOS подписывается цифровой подписью — code signature. Она подтверждает целостность кода и личность разработчика. У формата подписи есть версии: со временем Apple прекращает поддержку старых вариантов, и система начинает отклонять бинарники, подписанные устаревшим способом.
Типичная ситуация: проект содержит стороннюю библиотеку или фреймворк, собранный много лет назад. При попытке запуска на современной версии iOS система проверяет подпись, видит устаревший формат и блокирует установку или запуск с этой ошибкой.
Важно понимать: это не сбой сертификата разработчика и не проблема provisioning profile, а именно несовместимость формата самой подписи внутри бинарного файла. Поэтому перевыпуск профилей сам по себе проблему не решает.
Основные причины появления
- 🔧 В проект включён устаревший фреймворк или .dylib, подписанный старой версией инструментов codesign.
- 📦 Используется старый архив .ipa, собранный давно и не пересобранный под актуальные требования.
- 🔄 Приложение установлено через сторонние сервисы подписи, которые применяют устаревший формат.
- 🧩 Проект собирается устаревшей версией Xcode, которая создаёт подпись старого формата.
- 📱 Целевая версия iOS на устройстве новее, чем формат подписи поддерживает.
Решение для разработчиков: обновление Xcode и пересборка
Первое, что стоит проверить, — актуальность среды разработки. Старые версии Xcode могут создавать подписи в формате, который новые версии iOS уже не принимают. Обновите Xcode через App Store или с портала разработчиков Apple, затем выполните полную очистку проекта.
Очистка удаляет кэшированные артефакты сборки, которые могли сохранить старую подпись:
Product → Clean Build Folder (Shift + Cmd + K)
Дополнительно имеет смысл удалить содержимое папки DerivedData — там накапливаются промежуточные результаты сборок, и устаревшие подписанные бинарники могут подтягиваться в новую сборку. Путь к папке можно посмотреть в настройках: Xcode → Settings → Locations.
Проверка и переподпись сторонних фреймворков
Если ошибка сохраняется после чистой сборки, вероятная причина — сторонний фреймворк внутри проекта. Проверить формат подписи конкретного бинарника можно командой в терминале:
codesign -dv --verbose=4 /путь/к/фреймворку.framework
В выводе обратите внимание на строку с версией подписи. Если фреймворк подписан давно устаревшим форматом, его нужно переподписать актуальным инструментом:
codesign --force --sign "Apple Development: Ваше имя (TEAM_ID)" --timestamp=none путь/к/фреймворку.framework
☑️ Переподпись устаревшего фреймворка
Оптимальный вариант — не переподписывать вручную, а обновить саму зависимость: скачать свежую сборку фреймворка у поставщика, обновить pods через pod update или пакеты Swift Package Manager. Актуальные версии библиотек обычно уже подписаны современным форматом.
⚠️ Внимание: переподписывайте только те бинарники, на которые у вас есть права. Ручная переподпись чужих коммерческих фреймворков может нарушать лицензионное соглашение поставщика.
Решение при установке IPA через сторонние инструменты
Если ошибка возникает при установке готового .ipa-файла через AltStore, Sideloadly или аналогичные сервисы, причина обычно в самом файле: он был собран и подписан давно, и его формат подписи устарел относительно вашей версии iOS.
В этом сценарии вариантов немного. Пользователь не может пересобрать чужое приложение, поэтому действия сводятся к следующему:
- 📥 Найти свежую сборку того же приложения, собранную недавно.
- 🔁 Обновить инструмент установки (AltStore, Sideloadly) до последней версии — новые выпуски корректнее работают с подписями.
- 🛠 Если у вас есть исходный код — собрать приложение самостоятельно в актуальном Xcode.
Почему старые IPA перестают работать
Apple периодически ужесточает требования к формату подписи кода в новых версиях iOS. Бинарники, подписанные устаревшими версиями codesign, перестают проходить проверку при установке. Это часть модели безопасности: система гарантирует, что весь исполняемый код соответствует актуальным требованиям целостности.
Проверка сертификатов и профилей
Хотя сама по себе ошибка не связана с истёкшим сертификатом, при переподписи и пересборке стоит убедиться, что вся цепочка подписания в порядке. Откройте Xcode → Settings → Accounts, выберите свою учётную запись Apple ID и проверьте состояние сертификатов через Manage Certificates.
Если сертификат разработчика отозван или истёк, создайте новый там же. В настройках таргета проекта (Signing & Capabilities) включите автоматическое управление подписью — Automatically manage signing — и убедитесь, что выбрана корректная команда разработчика. Это избавляет от ручной возни с provisioning profile и снижает риск ошибок подписи.
⚠️ Внимание: если проект собирается на CI-сервере, проверьте версию Xcode и инструментов командной строки именно на сборочной машине — она может отставать от вашей локальной среды, из-за чего CI-билды получают устаревшую подпись.
Сводная таблица сценариев
| Сценарий | Вероятная причина | Решение |
|---|---|---|
| Сборка в Xcode | Устаревший фреймворк в проекте | Обновить зависимость или переподписать её |
| Сборка в Xcode | Старая версия Xcode | Обновить Xcode, очистить DerivedData |
| Установка IPA | Старый файл .ipa | Найти свежую сборку приложения |
| Сборка на CI | Устаревшие инструменты на сервере | Обновить Xcode и CLI tools на CI |
| Запуск на новой iOS | Формат подписи не поддерживается системой | Пересобрать приложение актуальными инструментами |
Часто задаваемые вопросы
Поможет ли перевыпуск provisioning profile?
Нет. Ошибка относится к формату подписи самого бинарного файла, а не к профилю или сертификату. Профиль влияет на то, кому разрешён запуск, но не на версию формата подписи кода.
Можно ли исправить ошибку без исходного кода приложения?
Только частично: можно попробовать переподписать бинарник командой codesign, если у вас есть права на это. Но надёжнее получить свежую сборку от разработчика приложения.
Почему ошибка появилась после обновления iOS?
Новые версии iOS могут прекращать поддержку старых форматов подписи. Приложение, которое работало раньше, перестаёт проходить проверку. Решение — обновление приложения до версии, собранной современными инструментами.
Как узнать, какой именно фреймворк вызывает ошибку?
Проверяйте по очереди все встроенные фреймворки командой codesign -dv. Часто виновником оказывается самая старая зависимость в проекте — та, что не обновлялась дольше всех.
Влияет ли бесплатный аккаунт разработчика на эту ошибку?
Нет, тип аккаунта определяет ограничения на установку и срок действия подписи, но не формат. Однако при переподписи на бесплатном аккаунте приложение всё равно потребует периодического обновления подписи.