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
A 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:
- Versão atual: 3.5
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 ajuda 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 (muitas construções no código nativo são ambíguas).
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 os argumentos de linha de comando corretos do compilador de clang para garantir a análise adequada. Isso ocorre porque a fase de análise objective sharpie é simplesmente uma ferramenta implementada em relação à API de libtooling clang.
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 um "scaffold" de associação C# adequado para entrada para as ferramentas de associação Xamarin e btouch para as bmac ferramentas de associação do Xamarin.
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 por quê.
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.