NDK の概要

NDK(Native Development Kit)は、Android で C / C++ コードを使用できるようにするツールセットです。ネイティブ アクティビティを管理して、センサーやタップ入力など実機のコンポーネントにアクセスできるプラットフォーム ライブラリを提供します。NDK は、Java コードとフレームワーク API のみを使用してアプリを開発する、ほとんどの Android プログラミングの初心者には向かないツールです。ただし、以下のいずれかを行う場合には NDK が役立ちます。

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

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

ネイティブ ライブラリをコンパイルする Android Studio のデフォルトのビルドツールは CMake です。多数の既存プロジェクトで ndk-build が使用されているため、Android Studio ではこのビルド ツールキットもサポートしています。ただし、新しいネイティブ ライブラリを作成している場合は 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 ビルド スクリプトを作成し、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 とそのコンポーネントの詳細をご覧ください。