【Android】NDKのインストール

現在,Androidアプリを作成していてNDK(Native Development Kit)が必要になったので導入してみた。

以前,Eclipseで開発していた時には導入していたが,開発環境をAndroid StudioにしてからはNDKを使用する機会が無かったので導入していなかった。そこで,今回改めて導入することにした。

NDK(Native Development Kit)

Android環境において,C/C++コードを使用できるようにするツールセット。処理速度を向上させたい場合や,C/C++ライブラリを使用したい場合などに使う。

Android NDK Preview - Android Tools Project Site

必須環境

下記の環境が必要である。

Android NDK Preview - Android Tools Project Site

導入

導入時環境

導入しようとしたときの環境は下記の通り。


ちなみにPCのスペックは下記の通り。

Android Studioのアップデート

色々なサイトを見ると,Android Studioメニュー「Help」→「Check for Update...」をクリックして開いた「Platform and Plugin Updates」ダイアログの「Update Now」ボタンを押せば アップデートできるらしいが,1.2だと「Update Now」ボタンが無かったので,手動でダウンロードを行い,Android Studio 1.5.1にアップデートした。

Gradleのアップデート

Android Studioメニュー「File」→「Project Structure...」をクリックして「Project Structure」ウィンドウを開く。「Project Structure」ウィンドウの左にあるタブから「Project」を選択し,「Gradle version」に変更したいバージョンを入力すると自動でインストールされる。下図の通り,Gradle 2.10にアップデートした。

f:id:nbps:20160319101039j:plain


NDKのインストール

Android Studioの「Project」にある「app」を右クリックし,「Open Module Setting」を選択する。

f:id:nbps:20160319095459j:plain


開いた「Project Structure」ウィンドウの左にあるタブから「SDK Location」を選択し,「Download NDK」をクリックしてNDKをダウンロード。

f:id:nbps:20160319095507j:plain


インストールが完了するとNDKのパスが表示される。

f:id:nbps:20160319095513j:plain


experimental pluginの設定

別途作成したCソース(yyy.c)とヘッダファイル(yyy.h)を./app/src/main/jniにおき,buildをしてみると下記エラーが出る。


Error:Execution failed for task ':app:compileDebugNdk'.
> Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin.


experimental pluginが必要らしいので,下記ページを参考にexperimental pluginを入れてみる。

Experimental Plugin User Guide - Android Tools Project Site


まずexperimental pluginはgradleのバージョンごとに対応するバージョンがある。

Plugin Version Gradle Version
0.1.0 2.5
0.2.0 2.5
0.3.0-alpha3 2.6
0.4.0 2.8
0.6.0-alpha1 2.8
0.6.0-alpha5 2.10


なお,Gradleのバージョンは下記ファイルで確認できる。

./gradle/wrapper/gradle-wrapper.properties


Gradle Versionが2.10なので,Plugin Version 0.6.0-alpha5を入れる。「0.6.0-alpha5」とそれ以前のバージョンでは以下の設定ファイルの記述方法が異なるようなので注意。以下はPlugin Version 0.6.0-alpha5の場合の設定方法である。


pluginのクラスパスを下記の通り書き換える。

./build.gradle


さらに,下記の通り書き換える。
9行目のapplicationIdには,各アプリのIDを指定する。

./app/build.gradle


ここまでの設定でbuildをすると,yyy.cの#include の行で下記エラーが出る。


Cannot find ‘yyy.h’


moduleNameを指定する必要があるようである。また,ソースディレクトリをjniフォルダ内のsrcに変える。(デフォルトではソースディレクトリがsrc/main/javaとなっている。)

./app/build.gradle


上記の変更でbuildが通り,Andorid環境でC/C++をコードを使用できるようになった。