Hatena::ブログ(Diary)

Android(アンドロイド)情報-ブリリアントサービス RSSフィード


2009-07-07

AndroidのNDK 1.5でHelloJNIを動かす手順

| 16:49 |

f:id:bs-android:20090707164602p:image

先日発表されたAndroidNDK(Native Development Kit)のお陰でapkファイルにライブラリを同梱するためにソースコードをすべてダウンロードする必要がなくなった上に、Windowsだけでも作業できるようになり、開発がかなり楽になりました。

今回はNDKに付属しているhello-jniという単純なサンプルプロジェクトをWindows上でビルド、実行するまでの手順をまとめてみました。



準備

cygwinダウンロードインストール
  • ここからhttp://www.cygwin.com/cygwin-icon.gifアイコンをクリックしてsetup.exeをダウンロードします。
  • setup.exeを実行すると以下のような画面になるので、「次へ(N)」を押して先に進みます。

f:id:bs-android:20090707131141g:image




  • さらに「次へ(N)」を押して先に進みます。

f:id:bs-android:20090707131332g:image




  • cygwinrootディレクトリを変更する必要がなければ、何も変更せずに「次へ(N)」を押して先に進みます。

f:id:bs-android:20090707131437g:image




  • cygwinパッケージのディレクトリを変更する必要がなければ、何も変更せずに「次へ(N)」を押して先に進みます。

f:id:bs-android:20090707131556g:image




  • インターネット接続にProxyを設定していなければ「Direct Connection」、IEと同じ設定を使用する場合は「Use IE5 Settings」、Proxyを手動で設定する場合は「Use HTTP/FTP Proxy」を設定し、「次へ(N)」を押して先に進みます。

f:id:bs-android:20090707131634g:image




  • ダウンロード先を選んで「次へ(N)」を押して先に進みます。日本のドメインを選んだ方がスピードは速いです。また、ftpだと繋がらないことが多いので、httpのものを選んだほうが良いようです。

f:id:bs-android:20090707131848g:image




  • 以下のような画面がでるので、しばらく待ちます。

f:id:bs-android:20090707132444g:image




f:id:bs-android:20090707132531g:image




  • スクロールさせて、「Devel」の「+」ボタンを押してDevelのカテゴリのリストを展開します。

f:id:bs-android:20090707133945g:image




  • さらにスクロールし、gccのパッケージを選択(※赤丸のしるしの部分をクリック)します。自動的にgcc-coreなどにもチェックが入りますが、そのままにしておきます。

f:id:bs-android:20090707134133g:image




  • さらに下にスクロールし、makeのパッケージを選択(※赤丸のしるしの部分をクリック)します。同じく自動的に他のパッケージにもチェックが入りますが、そのままにしておきます。そして「次へ(N)」を押して先に進みます。

f:id:bs-android:20090707135430g:image




  • すると以下のような画面になるので、完了するまで待ちます。

f:id:bs-android:20090707135634g:image




  • この画面が出れば完了です。「完了」を押して終了します。

f:id:bs-android:20090707135721g:image




Windows環境変数の設定

デスクトップ上にできるhttp://www.cygwin.com/cygwin-icon.gifアイコンから起動させると、WindowsのユーザーアカウントディレクトリがHOMEディレクトリになり、Windows XPの場合はパスにスペースが含まれるため、後の作業がうまくいきません。

その為、環境変数「HOME」を設定して、あらかじめ任意のHOMEディレクトリを指定しておきます。


環境変数の設定方法

f:id:bs-android:20090707140338g:image




  • システムのプロパティ画面が出るので、「詳細設定」タブを選択します。

f:id:bs-android:20090707141333g:image




  • 詳細設定の画面で「環境変数」ボタンを押します。

f:id:bs-android:20090707141430g:image




f:id:bs-android:20090707141456g:image




  • 変数名に「HOME」、変数値に「/home/ユーザー名」(※ユーザー名部分は任意)を入力し、OKで抜けます。

f:id:bs-android:20090707141558g:image


これでWindows側の環境変数の設定は完了です。

デスクトップ上にできているhttp://www.cygwin.com/cygwin-icon.gifアイコンから起動させると、

c:\cygwin\home\ユーザー名

ディレクトリが自動的に生成され、ここが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プロジェクトを取り込む

  • Eclipseが起動している状態で、Ctrl+Nキーを押下して新規プロジェクト作成画面を開き、「Android Project」を選択して「Next」ボタンを押します。

f:id:bs-android:20090707160908g:image




  • 「Create project from existiong source」を選びます。

f:id:bs-android:20090707161300g:image




  • 「Browse」ボタンを押します。

f:id:bs-android:20090707161645g:image




  • NDKを解凍したディレクトリの下の「apps/hello-jni/project」を選択して「OK」ボタンを押します。

f:id:bs-android:20090707161722g:image




f:id:bs-android:20090707161836g:image




  • HelloJniプロジェクトが取り込まれたところ。libsの下にlibhello-jni.soファイルが含まれています。

f:id:bs-android:20090707161943g:image




ここからはいつも通り、普通の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!