Uso di librerie native

Xamarin.Android supporta l'uso di librerie native tramite il meccanismo PInvoke standard. È anche possibile aggregare librerie native aggiuntive che non fanno parte del sistema operativo nella .apk.

Per distribuire una libreria nativa con un'applicazione Xamarin.Android, aggiungere il file binario della libreria al progetto e impostarne l'azione di compilazione su AndroidNativeLibrary.

Per distribuire una libreria nativa con un progetto di libreria Xamarin.Android, aggiungere il file binario della libreria al progetto e impostarne l'azione di compilazione su EmbeddedNativeLibrary.

Si noti che poiché Android supporta più interfacce binarie dell'applicazione(ABI), Xamarin.Android deve conoscere l'ABI per cui è compilata la libreria nativa. Esistono due modi per farlo:

  1. Percorso "sniffing"
  2. Utilizzando un AndroidNativeLibrary/Abi elemento all'interno del file di progetto

Con l'analisi del percorso, il nome della directory padre della libreria nativa viene usato per specificare l'ABI di destinazione della libreria. Pertanto, se si aggiunge lib/armeabi/libfoo.so al progetto, l'ABI verrà "sniffed" come armeabi.

In alternativa, è possibile modificare il file di progetto per specificare in modo esplicito l'interfaccia ABI da usare:

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

Per altre informazioni sull'uso di librerie native, vedere Interoperabilità con librerie native.

Debug di Codice nativo con Visual Studio

Se si usa Visual Studio 2019 o Visual Studio 2017, non è necessario modificare i file di progetto come descritto in precedenza. È possibile compilare ed eseguire il debug di C++ all'interno della soluzione Xamarin.Android aggiungendo un riferimento a un progetto C++ Dynamic Shared Library (Android).

Per eseguire il debug del codice C++ nativo nel progetto, seguire questa procedura:

  1. Fare doppio clic su Proprietà progetto e selezionare la pagina Opzioni Android.
  2. Scorrere verso il basso fino a Opzioni di debug.
  3. Nel menu a discesa Debugger selezionare C++ (anziché .NET predefinito (Xamarin)).