Usar bibliotecas nativas

O Xamarin.Android dá suporte ao uso de bibliotecas nativas por meio do mecanismo PInvoke padrão. Você também pode agrupar bibliotecas nativas adicionais que não fazem parte do sistema operacional em seu .apk.

Para implantar uma biblioteca nativa com um aplicativo Xamarin.Android, adicione o binário da biblioteca ao projeto e defina sua Ação de Build como AndroidNativeLibrary.

Para implantar uma biblioteca nativa com um projeto de biblioteca Xamarin.Android, adicione o binário da biblioteca ao projeto e defina sua Ação de Build como EmbeddedNativeLibrary.

Observe que, como o Android dá suporte a várias ABIs (Interfaces Binárias de Aplicativo), o Xamarin.Android deve saber para qual ABI a biblioteca nativa foi criada. Há duas maneiras de fazer isso:

  1. Caminho "farejando"
  2. Usando um AndroidNativeLibrary/Abi elemento dentro do arquivo de projeto

Com a detecção de caminho, o nome do diretório pai da biblioteca nativa é usado para especificar a ABI usada como destino pela biblioteca. Portanto, se você adicionar lib/armeabi/libfoo.so ao projeto, a ABI será "detectada" como armeabi.

Como alternativa, você pode editar o arquivo de projeto para especificar explicitamente a ABI a ser usada:

<ItemGroup>
    <AndroidNativeLibrary Include="path/to/libfoo.so">
        <Abi>armeabi</Abi>
    </AndroidNativeLibrary>
</ItemGroup>

Para obter mais informações sobre como usar bibliotecas nativas, consulte Interoperabilidade com bibliotecas nativas.

Depurando o Código Nativo com o Visual Studio

Se você estiver usando o Visual Studio 2019 ou o Visual Studio 2017, não precisará modificar seus arquivos de projeto, conforme descrito acima. Você pode criar e depurar c++ dentro de sua solução Xamarin.Android adicionando uma referência de projeto a um projeto da Biblioteca Compartilhada Dinâmica (Android) do C++.

Para depurar o código C++ nativo em seu projeto, siga estas etapas:

  1. Clique duas vezes em Propriedades do projeto e selecione a página Opções do Android .
  2. Role para baixo até Opções de depuração.
  3. No menu suspenso Depurador , selecione C++ (em vez do .NET padrão (Xamarin)).

Os desenvolvedores do Visual Studio C++ podem ver o exemplo de SanAngeles_NativeDebug para tentar depurar o C++ do Visual Studio 2019 ou do Visual Studio 2017 com o Xamarin; e consulte nossa postagem no blog para obter mais informações.