AndroidのNDK 1.5でHelloJNIを動かす手順
先日発表されたAndroidのNDK(Native Development Kit)のお陰でapkファイルにライブラリを同梱するためにソースコードをすべてダウンロードする必要がなくなった上に、Windowsだけでも作業できるようになり、開発がかなり楽になりました。
今回はNDKに付属しているhello-jniという単純なサンプルプロジェクトをWindows上でビルド、実行するまでの手順をまとめてみました。
準備
cygwinのダウンロード、インストール
- ここからのアイコンをクリックしてsetup.exeをダウンロードします。
- setup.exeを実行すると以下のような画面になるので、「次へ(N)」を押して先に進みます。
- さらに「次へ(N)」を押して先に進みます。
- インターネット接続にProxyを設定していなければ「Direct Connection」、IEと同じ設定を使用する場合は「Use IE5 Settings」、Proxyを手動で設定する場合は「Use HTTP/FTP Proxy」を設定し、「次へ(N)」を押して先に進みます。
- 以下のような画面がでるので、しばらく待ちます。
- インストールするパッケージを選択する画面になります。
- スクロールさせて、「Devel」の「+」ボタンを押してDevelのカテゴリのリストを展開します。
- さらに下にスクロールし、makeのパッケージを選択(※赤丸のしるしの部分をクリック)します。同じく自動的に他のパッケージにもチェックが入りますが、そのままにしておきます。そして「次へ(N)」を押して先に進みます。
- すると以下のような画面になるので、完了するまで待ちます。
- この画面が出れば完了です。「完了」を押して終了します。
Windows環境変数の設定
デスクトップ上にできるのアイコンから起動させると、WindowsのユーザーアカウントのディレクトリがHOMEディレクトリになり、Windows XPの場合はパスにスペースが含まれるため、後の作業がうまくいきません。
その為、環境変数「HOME」を設定して、あらかじめ任意のHOMEディレクトリを指定しておきます。
環境変数の設定方法
- マイコンピュータのプロパティを開く
- システムのプロパティ画面が出るので、「詳細設定」タブを選択します。
- 詳細設定の画面で「環境変数」ボタンを押します。
- 変数名に「HOME」、変数値に「/home/ユーザー名」(※ユーザー名部分は任意)を入力し、OKで抜けます。
これでWindows側の環境変数の設定は完了です。
デスクトップ上にできているのアイコンから起動させると、c:\cygwin\home\ユーザー名NDK1.5のダウンロード、インストール
ダウンロードが終わったら、android-ndk-1.5_r1-windows.zipを先程自動生成されたc:\cygwin\home\ユーザー名のディレクトリに展開します。
展開後に
c:\cygwin\home\ユーザー名\android-ndk-1.5_r1-windowsのようになるようにしてください。
c:\cygwin\home\ユーザー名\に.bashrcファイルが自動生成されている筈なので、そのファイルの最後尾に
export ANDROID_NDK_ROOT=C:/cygwin/home/ユーザー名/android-ndk-1.5_r1-windowsを追加して保存します。
そして、再度、cygwinのシェルを起動させます。cygwinシェル上で、
$ cd andoird-ndk-1.5_r1
としてNDKのディレクトリに移動し、
$ sh build/host-setup.shと入力します。
成功するとこのように出力されます。
$ sh build/host-setup.sh Detecting host toolchain. CC : compiler check ok (gcc) LD : linker check ok (gcc) CXX : C++ compiler check ok (g++) Generate : out/host/config.mk Toolchain : Checking for arm-eabi-4.2.1 prebuilt binaries Host setup complete. Please read docs/OVERVIEW.TXT if you don't know what to do.
これでNDKのインストールは完了です。
hello-jniライブラリのビルド
NDKのappsディレクトリにhello-jniのサンプルアプリがあります。今回はこれをビルドしてみます。
cygwinシェルのandoird-ndk-1.5_r1ディレクトリで以下のようにコマンドを実行します。$ make APP=hello-jni
成功すると以下のように出力されます。$ make APP=hello-jni Android NDK: Building for application 'hello-jni' Compile thumb : hello-jni <= sources/samples/hello-jni/hello-jni.c SharedLibrary : libhello-jni.so Install : libhello-jni.so => apps/hello-jni/project/libs/armeabi
この段階ではライブラリファイルの生成しか行われず、apkファイルは作成されません。
apkファイルを作成する為に、今回はEclipseでhello-jniプロジェクトを取り込みます。
Eclipseにhello-jniプロジェクトを取り込む
- 「Create project from existiong source」を選びます。
- 「Browse」ボタンを押します。
- NDKを解凍したディレクトリの下の「apps/hello-jni/project」を選択して「OK」ボタンを押します。
- ソースコードがインポートされ、以下のような画面になるので、「Finish」ボタンを押します。
- HelloJniプロジェクトが取り込まれたところ。libsの下にlibhello-jni.soファイルが含まれています。
ここからはいつも通り、普通のAndroidプロジェクトとして実行可能です。
もしライブラリ側のソースコード(~/android-ndk-1.5_r1/sources/samples/hello-jni/hello-jni.c)を更新した場合は、cygwinシェルから
$ make APP=hello-jni
を再度実行してライブラリファイルを更新した後、Eclipseの「Project Explorer」のHelloJniプロジェクトのルートを選択してF5キーを押下すると、ライブラリファイルが更新されたことが検知され、再コンパイルが走ります。
この手順を忘れると、apkファイルが再生成されないので注意が必要です。
Good luck!