TGViewer
Prefire iOS Prefire iOS @prefire_ios · 980 subscribers
Post #19 865
Про генерацию xcframeworks в 📦SPM

После недавней 😀Mobius конференции, решил покопать в эту сторону, так как мне кажется, что пора туда углубиться и почувствовать всю мощь 💪 «бинарей»

Для начала я попробовал поискать скрипты в Github Gist, но не смог найти скрипты для сборки именно из SPM проекта. После начал искать решения вообще везде, в итоге нашел такие:

1️⃣ swift-create-xcframework - первый и самый популярный инструмент который можно найти.
В целом, работает стабильно хотя и имеет ряд ограничений. Однако есть одна большая проблема: отсутствие поддержки Swift 5.9. При попытке использовать на этой версии языка, получаем множество ошибок. Правда есть луч надежды - Pull Request, который должен это исправить, но у меня он тоже не заработал.

Покопавшись глубже, я понял: вся магия ✨ фреймворка состоит из того, что он генерирует Xcode проект и уже из него собирает xcframework.

Зная, что не так давно SPM получил нативную поддержку Xcode (с костылями 😭), это навело меня на мысль, что возможно есть реализация на основе этой поддержки.

2️⃣ Тред на forums.swift про генерацию через .dynamic Package
Если кратко, то собрать xcframework можно только если SPM пакет имеет тип ".dynamic". И основное что нам нужно сделать - добавить этот тип к библиотеке в Package.swift. Дальше остается только запустить генерацию через xcodebuild.

3️⃣ Tuist с прогревом
Tuist имеет возможность прогревать запуск, что на самом деле генерирует xcframeworks. За это отвечает команда tuist warm. Пока для меня самое работающее решение с двумя НО. Команда warm закрытая (без исходников). Некоторые пакеты не генерируются (swift-snapshot-testing). Внутри, как я думаю, тоже генерируется Xcode проект.

Получается есть всего два подхода:
👉 Генерация Xcode проекта из Package
👉 Добавление .dynamic типа к Package

🤔 Какой можно сделать вывод?
Я не нашел хорошего решения, чтобы собрать комплексные и сложные фреймворки не одним из способов, но в тоже время простые зависимости собираются любым из способов на ура.

#blog #tools
  • ❤ 3
  • ☃ 2
More from @prefire_ios
  1. Sep 16, 2026☺️ Prefire в требованиях к вакансиям Где-то месяц назад поставил ежедневную задачу на Chat…
  2. Sep 5, 2026🧭 Podlodka iOS Crew: разработка с AI С 14 по 18 сентября пройдет новый сезон Podlodka iOS…
  3. Aug 26, 2026Кажется, мой кот начал жить своей жизнью. Сначала друзья просто закинули Mewmori в несколь…
  4. Aug 18, 2026Нахождение текста котом Mewmori в уникальных приложениях Что бы кот видел, я снимаю скринш…
  5. Aug 17, 2026Начал готовить к релизу ScreenCat - 🐈 Mewmori - Переименовал проект в Mewmori (типо memor…
  6. Aug 5, 2026Сделал систему скинов для котиков 🐈 В ScreenCat уже много скинов, и я прям сильно устал р…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →