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 ユーザーの皆様へ: ネイティブ プロジェクトですでに CMake または ndk-build を使用している、Gradle ビルドシステムの安定版を使用したい、アドオンツール(CCache など)のサポートを必要としている、のいずれかに当てはまる場合は、プラグイン バージョン 2.2.0 以降に移行し、CMake または ndk-build を使用してネイティブ ライブラリをビルドすることをご検討ください。 こうした条件に当てはまらない場合は、引き続き試験運用版の Gradle と Android プラグインを使用できます。
NDK とツールをダウンロードする
アプリ用のネイティブ コードをコンパイル、デバッグするには、次のコンポーネントが必要です。
- Android Native Development Kit(NDK): Android で C / C++ コードを使用できるようにするツールのセット。
- CMake: Gradle と連携してネイティブ ライブラリをビルドする外部ビルドツール。ndk-build のみを使用する予定の場合は、このコンポーネントは不要です。
- LLDB: Android Studio がネイティブ コードをデバッグする際に使用するデバッガ。
こうしたコンポーネントのインストールについては、NDK と CMake のインストールと設定をご覧ください。
ネイティブ プロジェクトを作成、インポートする
Android Studio のセットアップが完了したら、C / C++ のサポートを使用して新しいプロジェクトを作成できます。ただし、既存の Android Studio プロジェクトに対してネイティブ コードの追加やインポートを行う場合は、以下の基本プロセスに沿って進める必要があります。
-
新しいネイティブ ソースファイルを作成して、Android Studio プロジェクトに追加します。
- すでにネイティブ コードがある場合や、ビルド済みネイティブ ライブラリをインポートする場合は、この手順をスキップしてください。
-
CMake ビルド スクリプトを作成して、ネイティブ ソースをライブラリにビルドする方法を指定します。このビルド スクリプトは、ビルド済みライブラリやプラットフォーム ライブラリに対してインポートやリンクを行う際にも必要になります。
CMakeLists.txt
ビルド スクリプトが存在する既存のネイティブ ライブラリを使用する場合や、ndk-build を使用してAndroid.mk
ビルド スクリプトを組み込む場合は、この手順をスキップしてください。
-
CMake または ndk-build スクリプト ファイルへのパスを指定して、Gradle をネイティブ ライブラリにリンクします。Gradle はこのビルド スクリプトを使用してソースコードを Android Studio プロジェクトにインポートし、ネイティブ ライブラリ(SO ファイル)を APK にパッケージ化します。
注: サポートを終了した
ndkCompile
ツールを使用している既存プロジェクトの場合は、build.properties
ファイルを開き、次のコード行を削除してから、CMake または ndk-build を使用するように Gradle を設定する必要があります。// Remove this line android.useDeprecatedNdk = true
- [Run] をクリックしてアプリをビルドして実行します。Gradle が、CMake または ndk-build プロセスを依存関係として追加し、ネイティブ ライブラリをコンパイル、ビルドして APK にパッケージ化します。
実際のデバイス上やエミュレータ上でアプリを実行したら、Android Studio を使用してアプリをデバッグできます。NDK とそのコンポーネントの詳細については、概念をご覧ください。