Наша компания публикует платформу для использования третьими лицами.
Мы обновляем эту платформу, и мы решили поддерживать минимальную версию 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-битных платформах) только для удовлетворения компоновщика сторонних приложений?