Associar bibliotecas swift do iOS

Importante

No momento, estamos investigando o uso de associação personalizada na plataforma Xamarin. Faça esta pesquisa para informar os esforços de desenvolvimento futuros.

A plataforma iOS, juntamente com suas linguagens e ferramentas nativas, está em constante evolução e há muitas bibliotecas de terceiros que foram desenvolvidas usando as ofertas mais recentes. Maximizar a reutilização de código e componente é um dos principais objetivos do desenvolvimento multiplataforma. A capacidade de reutilizar componentes criados com Swift tornou-se cada vez mais importante para os desenvolvedores do Xamarin à medida que sua popularidade entre os desenvolvedores continua a crescer. Talvez você já esteja familiarizado com o processo de associação de bibliotecas regulares Objective-C . Documentação adicional agora está disponível descrevendo o processo de Associação de um Swift Framework, para que eles sejam consumíveis por um aplicativo Xamarin da mesma maneira. A finalidade deste documento é descrever uma abordagem de alto nível para criar uma Associação Swift para Xamarin.

Abordagem de alto nível

Com o Xamarin, você pode associar qualquer biblioteca nativa de terceiros para ser consumível por um aplicativo Xamarin. Swift é a nova linguagem e criar associação para bibliotecas criadas com essa linguagem requer algumas etapas e ferramentas adicionais. Essa abordagem envolve as quatro etapas a seguir:

  1. Criando a biblioteca nativa
  2. Preparando os metadados do Xamarin, que permitem que as ferramentas do Xamarin gerem classes C#
  3. Criando uma biblioteca de associação Xamarin usando a biblioteca nativa e os metadados
  4. Consumindo a biblioteca de associação do Xamarin em um aplicativo Xamarin

As seções a seguir descrevem essas etapas com detalhes adicionais.

Criar a biblioteca nativa

A primeira etapa é ter um Swift Framework nativo pronto com Objective-C o cabeçalho criado. Esse arquivo é um cabeçalho gerado automaticamente que expõe classes, métodos e campos Swift desejados, tornando-os acessíveis para c Objective-C # e, por fim, por meio de uma biblioteca de associação Xamarin. Esse arquivo está localizado na estrutura no seguinte caminho: <FrameworkName.framework>/Headers/<FrameworkName-Swift.h>. Se a interface exposta tiver todos os membros necessários, você poderá pular para a próxima etapa. Caso contrário, outras etapas serão necessárias para expor esses membros. A abordagem dependerá se você tiver acesso ao código-fonte da estrutura Swift:

  • Se você tiver acesso ao código, poderá decorar os membros Swift necessários com o @objc atributo e aplicar algumas regras adicionais para permitir que as ferramentas de build do Xcode saibam que esses membros devem ser expostos ao Objective-C mundo e ao cabeçalho.
  • Se você não tiver o acesso ao código-fonte, precisará criar uma estrutura swift proxy, que encapsula a estrutura Swift original e define a interface pública exigida pelo aplicativo usando o @objc atributo .

Preparar os metadados do Xamarin

A segunda etapa é preparar interfaces de definição de API, que são usadas por um projeto de associação para gerar classes C#. Essas definições podem ser criadas manual ou automaticamente pela ferramenta Objective Sharpie e pelo arquivo de cabeçalho FrameworkName-Swift.h> gerado automaticamente.< Depois que os metadados forem gerados, eles deverão ser verificados e validados manualmente.

Criar a biblioteca de associação do Xamarin.iOS

A terceira etapa é criar um projeto especial – biblioteca de associação do Xamarin.iOS. Ele faz referência às estruturas e aos metadados preparados na etapa anterior, juntamente com quaisquer dependências adicionais das quais a respectiva estrutura depende. Ele também manipula a vinculação das estruturas nativas referenciadas com o aplicativo Xamarin.iOS que consome.

Consumir a biblioteca de associação do Xamarin

A quarta e última etapa é fazer referência à biblioteca de associação em um aplicativo Xamarin.iOS. É suficiente habilitar o uso da biblioteca nativa em aplicativos Xamarin.iOS direcionados ao iOS 12.2 e superior. Para esses aplicativos direcionados a uma versão inferior, algumas etapas adicionais são necessárias:

  • Adicione dependências dylib Swift para suporte a runtime. A partir do iOS 12.2 e Swift 5.1, a linguagem tornou-se estável e compatível com a ABI (interface binária do aplicativo). É por isso que qualquer aplicativo direcionado a uma versão inferior do iOS precisa incluir dependências de dylibs Swift usadas pela estrutura. Use o pacote NuGet SwiftRuntimeSupport para incluir automaticamente as dependências dylib necessárias no pacote de aplicativos resultante.
  • Adicione a pasta SwiftSupport com dylibs assinados, que é validado pela AppStore durante o processo de carregamento. O pacote deve ser assinado e distribuído para a conexão appStore usando ferramentas Xcode, caso contrário, ele será rejeitado automaticamente.

Passo a passo

A abordagem acima descreve as etapas de alto nível necessárias para criar uma Associação Swift para Xamarin. Há muitas etapas de nível inferior envolvidas e mais detalhes a serem considerados ao preparar essas associações na prática, incluindo a adaptação a alterações nas ferramentas e linguagens nativas. A intenção é ajudá-lo a obter uma compreensão mais profunda desse conceito e das etapas de alto nível envolvidas nesse processo. Para obter um guia passo a passo detalhado, consulte a documentação passo a passo da associação do Xamarin Swift .