Use Android SDK & NDK without Eclipse on Mac OSX

タイトルは手抜き

Setup

Android SDKNDKをdownloadして適当な処($HOME/android など)に各々伸張、環境変数を設定する.

$ export ANDROID_HOME=$HOME/android/adt-bundle-mac-x86_64/sdk
$ export PATH=$PATH:$ANDROID_HOME/platform_tools:$ANDROID_HOME/tools #PATHの順番はちゃんと考えましょう
$ export ANDROIDNDK_HOME=$HOME/android/android-ndk-r8e
$ export PATH=$PATH:$ANDROID_NDK_HOME

徐に

$ android sdk

Android SDK Managerを立ち上げ必要な物を一通りインストールする.
この時エミュレータの速度をそこそこ使える状態にするため、Intel x86 Atom System ImageとIntel x86 Emulator Accelerator (HAXM)をインストール対象に含めておく.

$ANDROID_HOME/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmg
を展開し中に入っているmpkgを開いてインストールする.

AVDの「CPU/ABI」から「Intel Atom (x86)」を選択し、Emulation Optionsの「Use Host GPU」にチェック入れるとエミュレータが高速化される.

Build

なんとなく適当にプロジェクトを作ってみたりして、

$ android create project -n HelloWorld -t 1 -p ./HelloWorld -k jp.bocchies.helloworld -a HelloWorldActivity

jniディレクトリにAndroid.mkとApplication.mkを置いて(C++ソースコードはjniディレクトリ外にあってもmakeできれば問題ない)徐にbuild.

$ ndk-build
$ ant debug

AVDを機動しエミュレータを立ち上げて

$ adb install <apk-path>

しても、アプリが機動しない場合、x86向けにbuildができていない事が原因の可能性があるので、

$ echo "APP_ABI := x86" > jni/Application.mk
$ ndk-build clean
$ ndk-build

これでx86向けのsoができるのでそれをリンクさせてあげる事でエミュレータでも機動するようになるはず.
ただし、これだとx86向けしか作られないので、

$ echo "APP_ABI := all" > jni/Application.mk

とするとarmなどもまとめて作られるはず.