ネイティブ ライブラリの使用

Xamarin.Android では、標準の PInvoke メカニズムによるネイティブ ライブラリの使用がサポートされています。 また、OS に含まれていない追加のネイティブ ライブラリを .apk にバンドルすることもできます。

Xamarin.Android アプリケーションでネイティブ ライブラリをデプロイするには、ライブラリ バイナリをプロジェクトに追加し、そのビルド アクションAndroidNativeLibrary に設定します。

Xamarin.Android ライブラリ プロジェクトでネイティブ ライブラリをデプロイするには、ライブラリ バイナリをプロジェクトに追加し、そのビルド アクションEmbeddedNativeLibrary に設定します。

Android では、複数のアプリケーション バイナリ インターフェイス (ABI) をサポートしているため、ネイティブ ライブラリがどの ABI に対してビルドされているかが Xamarin.Android で認識される必要があります。 これを行うには 2 つの方法があります。

  1. パス "スニッフィング"
  2. プロジェクト ファイル内で AndroidNativeLibrary/Abi 要素を使用する

パス スニッフィングを使用すると、ネイティブ ライブラリの親ディレクトリ名が、ライブラリがターゲットとする ABI を指定するために使用されます。 したがって、プロジェクトに lib/armeabi/libfoo.so を追加すると、ABI は armeabi として "スニッフィング" されます。

または、プロジェクト ファイルを編集して、使用する ABI を明示的に指定することもできます。

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

ネイティブ ライブラリの使用に関する詳細については、ネイティブ ライブラリとの相互運用性に関するページを参照してください。

Visual Studio を使用したネイティブ コードのデバッグ

Visual Studio 2019 または Visual Studio 2017 を使用している場合は、前述のように、プロジェクト ファイルを変更する必要はありません。 プロジェクト参照を C++ ダイナミック共有ライブラリ (Android) プロジェクトに追加することによって、Xamarin.Android ソリューション内の C++ をビルドおよびデバッグできます。

プロジェクト内のネイティブ C++ コードをデバッグするには、次の手順に従います。

  1. プロジェクトの [プロパティ] をダブルクリックし、 [Android オプション] ページを選択します。
  2. [デバッグ オプション] まで下にスクロールします。
  3. [デバッガー] ドロップダウン メニューで、 [C++] (既定値の [.NET (Xamarin)] ではなく) を選択します。

Visual Studio C++ 開発者は、SanAngeles_NativeDebug サンプルを参照して、Xamarin を使用して Visual Studio2019 または Visual Studio2017 から C++ をデバッグすることができます。詳細については、Microsoft のブログ投稿を参照してください。