Swift условно импортирует фреймворк в зависимости от доступности архитектуры - PullRequest
0 голосов
/ 05 марта 2020

Наша компания публикует платформу для использования третьими лицами.

Мы обновляем эту платформу, и мы решили поддерживать минимальную версию iOS 11.0, поэтому мы настроили минимальную цель развертывания для iOS 11.0, когда мы компилируем фреймворк.

Поскольку iOS 11 отказался от поддержки 32-битной системы, это побочный эффект нашей фреймворка, содержащего только 64-битные двоичные файлы и интерфейсы.

Как Однако, как поставщик платформы, мы не можем заставить все третьи стороны также устанавливать свои минимальные цели развертывания на iOS 11. Поэтому я создал тестовое приложение с целью развертывания iOS 10, которое пытается условно ссылаться на эту платформу. Идея состоит в том, что части приложения, которые ссылаются на нашу инфраструктуру, не должны быть там на iOS 10, но остальная часть приложения не должна быть затронута

Не удается создать XCode со следующей ошибкой:

Could not find module 'MyFramework' for target 'armv7-apple-ios'; found: x86_64-apple-ios-simulator, arm64, x86_64, arm64-apple-ios

Я пробовал слабое связывание, установив платформу "Необязательно" в разделе XCode Build Phases / Link Binary with Libraries, а также пропустив -weak_framework MyFramework в качестве дополнительного параметра компоновщика, однако в во всех случаях сборка не удалась.

canImport также не работает. Учитывая это:

#if canImport(MyFramework)
 // empty
#endif

Даже только один оператор canImport(MyFramework) вызывает сбой сборки с Could not find module for target...

Есть ли способ обойти это? Нужно ли нам компилировать 32-битную версию нашей платформы (даже если сама платформа не работает на 32-битных платформах) только для удовлетворения компоновщика сторонних приложений?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...