NDK の概要

NDK(Native Development Kit)は、Android で C / C++ コードを使用できるようにするツールセットです。NDK のプラットフォーム ライブラリを活用することで、ネイティブ アクティビティを管理し、センサーやタップ入力など、実際のデバイスのコンポーネントにアクセスできるようになります。それほど経験のない Android プログラマーの場合、アプリを開発する際に必要となるのは Java コードとフレームワーク API に限られるため、通常、NDK はツールとして適していません。NDK が役に立つのは、以下のいずれかに該当する場合です。

  • 低レイテンシを実現したり、ゲームや物理学シミュレーションなど、演算負荷の高いアプリを実行したりするために、デバイスからできる限り高いパフォーマンスを引き出す必要がある場合。
  • 独自または他のデベロッパーの C / C++ ライブラリを再利用する場合。

Android Studio 2.2 以降を使用すると、NDK によって C / C++ コードをネイティブ ライブラリにコンパイルし、Gradle(IDE の統合ビルドシステム)によってそのネイティブ ライブラリを APK にパッケージ化することができます。これにより、Java コードから JNI(Java Native Interface)経由でネイティブ ライブラリ内の関数を呼び出せるようになります。Gradle と Android ビルドシステムの詳細については、ビルドを設定するをご覧ください。

Android Studio でネイティブ ライブラリをコンパイルするデフォルトのビルドツールは CMake です。また、多数の既存プロジェクトで使われている ndk-build もサポートしています。ただし、新しいネイティブ ライブラリを作成する場合は CMake を使用する必要があります。

このガイドでは、Android Studio 上で NDK の利用を開始するための手順について説明します。Android Studio のバージョンが最新でない場合は、今すぐダウンロードしてインストールしてください。

試験運用版の Gradle ユーザーの皆様へ: 次のいずれかの条件にあてはまる場合は、プラグイン バージョン 2.2.0 以降に移行し、CMake または ndk-build を使用してネイティブ ライブラリをビルドすることをご検討ください。ネイティブ プロジェクトですでに CMake または ndk-build を使用している。Gradle ビルドシステムの安定版のほうを使用したい。CCache など、アドオンツールのサポートを必要としている。それ以外の場合は、引き続き試験運用版の Gradle と Android プラグインを使用することができます。

NDK とツールをダウンロードする

アプリ用のネイティブ コードをコンパイル、デバッグするには、次のコンポーネントが必要です。

  • Android Native Development Kit(NDK): Android で C / C++ コードを使用できるようにするツールのセット。
  • CMake: Gradle と連携してネイティブ ライブラリをビルドする外部ビルドツール。ndk-build を使用する予定の場合は、このコンポーネントは不要です。
  • LLDB: Android Studio がネイティブ コードをデバッグする際に使用するデバッガ。

各コンポーネントは、SDK Manager を使用してインストールできます。

  1. 開いているプロジェクトで、メインメニューから [Tools] > [Android] > [SDK Manager] を選択します。
  2. [SDK Tools] タブをクリックします。
  3. 図 1 に示すように、[LLDB]、[CMake]、[NDK] の横にあるチェックボックスをオンにします。

    図 1: SDK Manager から LLDB、CMake、NDK をインストールします。

  4. [Apply] をクリックして、次のダイアログで [OK] をクリックします。
  5. インストールが完了したら、[Finish] をクリックして、[OK] をクリックします。

ネイティブ プロジェクトを作成、インポートする

Android Studio のセットアップが完了したら、C / C++ のサポートを使用して新しいプロジェクトを作成することができます。ただし、既存の Android Studio プロジェクトに対してネイティブ コードの追加やインポートを行う場合は、以下の基本プロセスに沿って進める必要があります。

  1. 新しいネイティブ ソース ファイルを作成して、Android Studio プロジェクトに追加します。
    • すでにネイティブ コードがある場合や、ビルド済みネイティブ ライブラリをインポートする場合は、この手順をスキップしてください。
  2. CMake ビルド スクリプトを作成して、ネイティブ ソースをライブラリにビルドする方法を指定します。このビルド スクリプトは、ビルド済みライブラリやプラットフォーム ライブラリに対してインポートやリンクを行う際にも必要になります。
    • 既存のネイティブ ライブラリに CMakeLists.txt ビルド スクリプトがすでにある場合や、ndk-build を使用して Android.mk ビルド スクリプトを組み込む場合は、この手順をスキップしてください。
  3. CMake または ndk-build スクリプト ファイルへのパスを指定して、Gradle をネイティブ ライブラリにリンクします。Gradle はこのビルド スクリプトを使用してソースコードを Android Studio プロジェクトにインポートし、ネイティブ ライブラリ(SO ファイル)を APK にパッケージ化します。

    注: サポートを終了した ndkCompile ツールを使用している既存プロジェクトの場合は、build.properties ファイルを開き、次のコード行を削除してから、CMake または ndk-build を使用するように Gradle を設定する必要があります。

        // Remove this line
        android.useDeprecatedNdk = true
        
  4. [Run](メインメニューにあるアプリ実行用の [Run] ボタン)をクリックして、アプリをビルドして実行します。Gradle が、CMake または ndk-build プロセスを依存関係として追加し、ネイティブ ライブラリをコンパイル、ビルドして APK にパッケージ化します。

実際のデバイス上やエミュレーター上でアプリを実行したら、Android Studio を使用してアプリをデバッグすることができます。NDK とそのコンポーネントの詳細については、概念をご覧ください。