Привязка библиотек Swift для iOS

Внимание

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

Платформа iOS, наряду со своими собственными языками и инструментами, постоянно развивается и существует множество сторонних библиотек, разработанных с использованием последних предложений. Максимизация повторного использования кода и компонентов является одной из основных целей кросс-платформенной разработки. Возможность повторного использования компонентов, созданных с помощью Swift, становится все более важной для разработчиков Xamarin, так как их популярность среди разработчиков продолжает расти. Возможно, вы уже знакомы с процессом привязки обычных Objective-C библиотек. Теперь доступна дополнительная документация, описывающая процесс привязки Swift Framework, поэтому они используются приложением Xamarin таким же образом. Цель этого документа — описать высокоуровневый подход к созданию привязки Swift для Xamarin.

Обобщенный подход

С помощью Xamarin можно привязать любую собственную библиотеку стороннего производителя для использования приложением Xamarin. Swift — это новый язык и создание привязки для библиотек, созданных с помощью этого языка, требует некоторых дополнительных действий и инструментов. Этот подход предусматривает следующие четыре шага:

  1. Создание собственной библиотеки
  2. Подготовка метаданных Xamarin, которая позволяет инструменту Xamarin создавать классы C#
  3. Создание библиотеки привязки Xamarin с помощью собственной библиотеки и метаданных
  4. Использование библиотеки привязки Xamarin в приложении Xamarin

В следующих разделах эти действия описаны более подробно.

Создание собственной библиотеки

Первым шагом является подготовка собственной Swift Framework к Objective-C созданию заголовка. Этот файл представляет собой автоматически созданный заголовок, который предоставляет требуемые классы Swift, методы и поля, которые делают их доступными для обоих Objective-C и в конечном счете C# через библиотеку привязки Xamarin. Этот файл находится в платформе по следующему пути: FrameworkName.framework/Headers/<FrameworkName-Swift.h>>.< Если предоставленный интерфейс содержит все необходимые элементы, перейдите к следующему шагу. В противном случае для предоставления этих элементов требуются дальнейшие шаги. Этот подход зависит от того, есть ли у вас доступ к исходному коду платформы Swift:

  • Если у вас есть доступ к коду, вы можете декорировать необходимые члены Swift атрибутом @objc и применить несколько дополнительных правил, чтобы средства сборки Xcode знали, что эти элементы должны быть доступны Objective-C миру и заголовку.
  • Если у вас нет доступа к исходному коду, необходимо создать прокси-платформу Swift, которая упаковывает исходную платформу Swift и определяет общедоступный интерфейс, необходимый приложению с помощью атрибута @objc .

Подготовка метаданных Xamarin

Второй шаг — подготовка интерфейсов определений API, которые используются проектом привязки для создания классов C#. Эти определения можно создать вручную или автоматически с помощью средства Objective Sharpie и выше упоминание созданного< файла заголовка FrameworkName-Swift.h>. После создания метаданных его необходимо проверить и проверить вручную.

Создание библиотеки привязки Xamarin.iOS

Третий шаг — создание специального проекта — библиотеки привязки Xamarin.iOS. Он ссылается на платформы и метаданные, подготовленные на предыдущем шаге, вместе с любыми дополнительными зависимостями, от которых зависит соответствующая платформа. Он также обрабатывает связывание ссылочных собственных платформ с использованием приложения Xamarin.iOS.

Использование библиотеки привязки Xamarin

Четвертым и последним шагом является ссылка на библиотеку привязки в приложении Xamarin.iOS. Достаточно включить использование собственной библиотеки в приложениях Xamarin.iOS, предназначенных для iOS 12.2 и более поздних версий. Для этих приложений, предназначенных для более низкой версии, требуются некоторые дополнительные действия.

  • Добавьте зависимости swift dylib для поддержки среды выполнения. Начиная с iOS 12.2 и Swift 5.1 язык стал стабильным и совместимым. Поэтому любое приложение, предназначенное для более низкой версии iOS, должно включать зависимости Swift dylibs, используемые платформой. Используйте пакет NuGet SwiftRuntimeSupport для автоматического включения необходимых зависимостей dylib в полученный пакет приложения.
  • Добавьте папку SwiftSupport с подписанными dylibs, которая проверяется AppStore во время отправки. Пакет должен быть подписан и распределен в AppStore connect с помощью средств Xcode, в противном случае он будет автоматически отклонен.

Пошаговое руководство

Приведенный выше подход описывает общие шаги, необходимые для создания привязки Swift для Xamarin. При подготовке этих привязок на практике, необходимо предпринять множество ситуативных действий, включая адаптацию к изменениям в собственных инструментах и языках. Этот документ призван помочь вам получить более глубокое представление об этой концепции и общем характере действий, связанных с этим процессом. Подробное пошаговое руководство см. в документации по пошаговому руководству по привязке Xamarin Swift.