Introdução com Objective Sharpie

Importante

Objective Sharpie é uma ferramenta para desenvolvedores experientes do Xamarin com conhecimento avançado de Objective-C (e por extensão, C). Antes de tentar associar uma Objective-C biblioteca, você deve ter um conhecimento sólido de como criar a biblioteca nativa na linha de comando (e uma boa compreensão de como funciona a biblioteca nativa).

Instalando o Objective Sharpie

O Objective Sharpie é atualmente uma ferramenta de linha de comando autônoma para Mac OS X 10.10 e mais recente e não é um produto Xamarin totalmente compatível. Ele só deve ser usado por desenvolvedores avançados para ajudar na criação de um projeto de associação para uma biblioteca de terceiros Objective-C .

Objective Sharpie pode ser baixado como um instalador de pacote do OS X padrão. Execute o instalador e siga todos os prompts na tela do assistente de instalação:

Dica

Use o sharpie update comando para atualizar para a versão mais recente.

Passo a passo básico

Objective Sharpie é uma ferramenta de linha de comando fornecida pelo Xamarin que auxilia na criação das definições necessárias para associar uma biblioteca de terceiros Objective-C ao C#. Mesmo ao usar o Objective Sharpie, o desenvolvedor precisará modificar os arquivos gerados após a conclusão do Objective Sharpie para resolver quaisquer problemas que não puderam ser tratados automaticamente pela ferramenta.

Sempre que possível, Objective Sharpie anotará APIs com as quais tem alguma dúvida sobre como associar corretamente (muitos constructos no código nativo são ambíguos). Essas anotações aparecerão como [Verify] atributos.

A saída do Objective Sharpie é um par de arquivos - ApiDefinition.cs e StructsAndEnums.cs - que podem ser usados para criar um projeto de associação que é compilado em uma biblioteca que você pode usar em aplicativos Xamarin.

Importante

Objective Sharpie vem com uma regra principal para uso adequado: você deve passar absolutamente os argumentos corretos da linha de comando do compilador clang para garantir a análise adequada. Isso ocorre porque a fase de análise do Objective Sharpie é simplesmente uma ferramenta implementada na API clang libtooling.

Isso significa que o Objective Sharpie tem todo o poder do Clang (o compilador C/Objective-C/C++ que realmente compila a biblioteca nativa que você associaria) e todo o seu conhecimento interno dos arquivos de cabeçalho para associação. Em vez de traduzir o AST analisado para o código de objeto, Objective Sharpie converte o AST em uma associação C# "scaffold" adequada para entrada para as bmac ferramentas de associação Xamarin e btouch .

Se Objective Sharpie errou durante a análise, isso significa que clang errou durante sua fase de análise tentando construir o AST e você precisa descobrir o motivo.

NOVO! As tentativas da versão 3.0 abordam parte dessa complexidade dando suporte diretamente a projetos Xcode. Se uma biblioteca nativa tiver um projeto Xcode válido, o Objective Sharpie poderá avaliar o projeto para um destino e uma configuração especificados para deduzir os arquivos de cabeçalho de entrada e os sinalizadores do compilador necessários.

Se nenhum projeto Xcode estiver disponível, você precisará estar mais familiarizado com o projeto deduzindo os arquivos de cabeçalho de entrada corretos, caminhos de pesquisa de arquivo de cabeçalho e outros sinalizadores de compilador necessários. É importante perceber que os sinalizadores do compilador usados para criar a biblioteca nativa são os mesmos que devem ser passados para o Objective Sharpie. Esse é um processo mais manual e que requer um pouco de familiaridade com a compilação de código nativo na linha de comando com a cadeia de ferramentas Clang.