Как импортировать конкретный фреймворк только при наличии iOS 13? - PullRequest
1 голос
/ 06 августа 2020

Наше приложение поддерживает iOS 12 и выше, однако у нас есть две новых локальных фреймворка «Jello» и «Wizdom» в приложении, но они поддерживают только iOS 13 и более поздние версии (поэтому они могут использовать Combine и SwiftUI) .

Приложение слабо связывается с Jello, Wizdom, Combine и SwiftUI. Основной модуль BaseUI приложения - это то, что на самом деле импортирует Jello. BaseUI поддерживает iOS 12 и выше, поэтому он также слабо связывается с Jello et c.

Однако мы сталкиваемся с проблемой, когда BaseUI не компилируется из-за ошибки: Compiling for iOS 12.0, but module 'Jello' has a minimum deployment target of iOS 13.0.

Как я могу сделать импорт условным при доступности iOS 13 (т.е. не импортировать его, если iOS 13 недоступен)?

(Пока что единственный обходной путь I ' Мы обнаружили, что нужно создать оболочку Objective C вокруг Jello и получить к ней доступ через эту оболочку, но это неудобно и неудобно. Я также пробовал обернуть весь этот файл с помощью #if canImport(SwiftUI) ... #endif, но это тоже не работает, потому что кажется, что это это просто проверка во время компиляции.)

1 Ответ

0 голосов
/ 06 августа 2020

Вы пытались условно импортировать фреймворк, как описано в этом посте: Условно импортировать фреймворк (например, Speech) на основе iOS версии в Swift? ? Здесь есть полное объяснение Однако основная информация заключается в том, что вы можете определить в структуре как необязательную в разделе «Цели» -> «Фазы сборки» -> «Связать двоичный файл с библиотеками» -> » Статус »фреймворка недоступен на iOS 12.

Вы также должны заключить код, используя эту библиотеку, с помощью тега @available.

...