Android NDKを用いた開発手順
ARToolKit professional for Android の開発手順やTipsの紹介
Section 3.2 環境設定とライブラリ構築
About
必要なソフトが揃ったら、環境設定を行います。 Cygwinでコンパイルするための設定を行い、共通で使うライブラリのコンパイルを行います。
Cygwinの設定
まずは、Android NDKに関するパスの設定を行います。
Cygwin Terminal を起動すると下記のようなウィンドウが開きます。
以降、Linuxなどと同じようなコンソール作業を行うので、Cygwin Terminalでの作業は下記のように表記します。
$ コマンド
では、まずはパス設定の追加です。 viパッケージをインストールしていれば、直接編集できるのですが、入れるのを忘れたのでechoで追記します。
$ echo 'export ANDROID_NDK_ROOT=/cygdrive/c/android-ndk' >> .bashrc
$ echo 'PATH=$PATH:$ANDROID_NDK_ROOT' >> .bashrc
$ tail .bashrc
# cnt=cnt-1
# fi
# done
#
# return 0
# }
#
# alias cd=cd_func
export ANDROID_NDK_ROOT=/cygdrive/c/android-ndk
export PATH=$PATH:$ANDROID_NDK_ROOT
$ source ~/.bashrc
$ echo $PATH
/usr/local/bin:/usr/bin:(中略):/cygdrive/c/android-ndk-windows
$
PATH設定に*/cygdrive/c/android-ndk*が含まれる状態にしてください。 なお、Windows上からc:\cygwin\home(ユーザー名).bashrcを直接編集しても構いませんが、改行コードに注意してください。 ウィンドウズ標準の改行コードでは余分なコードが入ってしまい、設定に失敗します。
とりあえず、今回はこれくらいしか設定することが無いので次に進めます。 なお、日本語の文字コード設定などをしていないので、このまま使う場合は基本的に日本語入力に関しては諦めてください。
Cygwinについて
いろいろなパッケージがあり、きちんとインストールして設定すればかなり強力なツールにも成り得ます。 あちこちのサイトで使い方や設定についてのTIPSが公開されているのでそれらを参考にすると良いかもしれません。
Android NDK のサンプルをビルド
ARToolKitに入る前に、本当にビルド出来るかを試します。 Android NDKのフォルダ内にsamples/hello-jniがあるので、これをビルドしてみましょう。
コマンド入力は、補完機能があるので、cd /cまで入力したら[Tabキー]を押してみてください。
パスが勝手に入ります。同じようにコマンドなどもこの方法で探す事ができるのでコマンド入力で迷ったら[Tabキー]を押してみてください。
では続けましょう。
$ cd /cygdrive/c/android-ndk/samples/hello-jni/
$ ndk-build
Gdbserver : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
Cygwin : Generating dependency file converter script
Compile thumb : hello-jni <= hello-jni.c
SharedLibrary : libhello-jni.so
Install : libhello-jni.so => libs/armeabi/libhello-jni.so
$
これで、ビルドすることができることが確認できたので、本題に入ります。
ARToolKitのコアをビルド
ARToolKit for Androidのフォルダ内からandrod、include、libを、Eclispeのworkspaceフォルダと同列の場所にコピーしてください。
今回の環境は、ar_androidフォルダにまとめているので、下記の図のようになります。
[-]C:\
`-[-] ar_android
|-[+] android
|-[+] include
|-[+] lib
`-[+] workspace
Windowsのバッチファイルを使用してビルドする方法もありますが、各種パスの設定が面倒なため、cygwin上でビルドします。
それではビルドします。そこそこ時間がかかりますので慌てずに待ちましょう。
$ cd /cygdrive/c/ar_android/android/
$ ndk-build
ARToolKit4 Android MK file
ARToolKit4 Android MK file
Compile arm : ar <= paramDecomp.c
Compile arm : ar <= mUnit.c
Compile arm : ar <= mFree.c
(中略)
Compile arm : eden <= EdenMath.c
Compile arm : eden <= glm.c
StaticLibrary : libeden.a
$
続けて、ARToolKitWrapperもビルドします。
$ ndk-build NDK_APPLICATION_MK=jni/Application-ARWrapper.mk
ARToolKit5 Android MK file
ARToolKit5 Android MK file
ARToolKit5 Android MK file
ARToolKit5 Android MK file
(中略)
SharedLibrary : libARWrapper.so
Install : libARWrapper.so => libs/mips/libARWrapper.so
$
これでコア部分のプレビルドが終わりました。パーミッションの関係でエラーを起こしやすいので調整しておきます。
$ chmod 755 jni/../../../android/libs/*
$ chmod 644 jni/../../../android/libs/*/*
$
次はサンプルのビルドと実行まで行います。