Как встроить фреймворк, который зависит от архитектуры - PullRequest
2 голосов
/ 23 января 2020

Мой iOS проект зависит от некоторых CustomLib.framework. Эта структура поставляется в виде двух отдельных файлов: один для симулятора, другой для реального устройства.

Я помещаю эти файлы в папки

@(PROJECT_DIR)/device_frameworks/CustomLib.framework

и

@(PROJECT_DIR)/simulator_frameworks/CustomLib.framework

Я редактировал

Build Settings->Search paths->Framework search paths:

Any iOS Simulator SDK     $(PROJECT_DIR)/simulator_frameworks
Any iOS SDK               $(PROJECT_DIR)/device_frameworks

Что я не понимаю, так это как добавить CustomLib.framework в проект Xcode и как добавить его как встроенный фреймворк (Build phases->Embed frameworks). Потому что на этих шагах я должен указать конкретную структуру, но у меня есть две отдельные структуры в папках device_frameworks и simulator_frameworks.

1 Ответ

2 голосов
/ 23 января 2020

В xcode нет способа включить их в зависимости от архитектуры, но Apple представила 2019 XCFrameworks в качестве нового формата распространения кода.

Из XCode 11 примечания к выпуску :

XCFramework позволяет объединить бинарный каркас или библиотеку для нескольких платформ - включая устройства iOS, iOS, симуляторы и Ma c Catalyst - в один распространяемый пакет .xcframework, который ваши разработчики могут используйте в своих собственных приложениях.

Вы можете использовать это, чтобы объединить обе эти платформы в одну, добавить их в свои проекты, и XCode использует версию соответствующей платформы включенной платформы или библиотеки во время сборки.

Вы можете создать XCFramework из терминала, используя следующую команду:

xcodebuild -create-xcframework -framework PATH_TO_FRAMEWORK1 -framework PATH_TO_FRAMEWORK2 -output PATH_TO_BUNDLED_FRAMEWORK

Где PATH_TO_FRAMEWORK1 и PATH_TO_FRAMEWORK2 - пути к вашим фреймворкам, а PATH_TO_BUNDLED_FRAMEWORK - путь к результирующее XCFramework.

Если вы находитесь в директории вашего проекта, команда может выглядеть так:

xcodebuild -create-xcframework -framework device_frameworks/CustomLib.framework -framework simulator_frameworks/CustomLib.framework -output BundledCustomLib.xcframework

Тогда вам нужно всего лишь добавить BundledCustomLib.xcframework в ваш проект.

...