Рабочий процесс разработки Xcode с бинарной структурой
Я использую xcframework, чтобы скрыть код.
Итак, у меня есть App.xcodeproj и xcframework в одном репо, видимом для подрядчиков.
Затем у меня есть еще один частный проект, в котором есть все, что есть в App.xcodeproj, за исключением того, что проект фреймворка является подпроектом для упрощения разработки (вместо скомпилированного xcframework).
Это работает достаточно хорошо, за исключением того, что мне нужно синхронизировать внутренние (частные) и внешние проекты. Изменения, вносимые подрядчиками в App.xcodeproj, необходимо вручную перенести во внутренний проект, соответствующим образом обновив пути.
Есть лучший способ это сделать?
1 ответ
Я решил это, переключившись на отдельные фреймворки вместо одного xcframework и используя xcworkspace.
Оказывается, Xcode будет отдавать приоритет неявной зависимости над скомпилированной структурой. Так что мне нужно было только мое приложение и проекты фреймворка в одном (частном) xcworkspace.
Я использую подход толстой структуры для поддержки симулятора, который немного уродливее, чем использование xcframework. Также был недостаток в том, что я использую Metal в структуре, поэтому мне пришлось загружать отдельный Metallib при запуске в симуляторе.
Возможно, в какой-то момент Xcode будет иметь целевой тип для xcframeworks, чтобы он мог отслеживать неявные зависимости. Смотрите здесь для получения дополнительной информации неявных зависимостей.