背景
- http://qiita.com/alingogo/items/203477c9da373ab7eacb に、Android上に、NDK実装を試してみた
 - android.mkは、自作じゃないので、仕組みなどが分からない
 - https://github.com/openxc/android-webcam などのライブラリは、コマンドラインでndk-buildを使って、ビルドしたことがある
 
目的
- コマンドラインで、ndk-buildの使い方を理解できる
 - .mkファイルの書き方を理解できる
 
ndk-buildの使い方
事前準備
- Windows 7
 - Android NDKのダウンロード
 - 環境変数の PATH にも NDK のフォルダを追加する
 
コマンドの例
| コマンド | 意味 | 
|---|---|
| ndk-build | 普通のビルド | 
| ndk-build clean | 生成した.soファイルを削除 | 
| ndk-build NDK_DEBUG=1 | デバッグ可能なバイナリの生成(デフォルト: 0) | 
| ndk-build V=1 | ビルドコマンドを表示 | 
| ndk-build NDK_LOG=1 | NDKのログを表示(デバッグのために) | 
補足
- この記述は、Android NDK r4以降の限定
 
android.mkの書き方
必須
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := webcam
LOCAL_SRC_FILES := webcam.c yuv.c video_device.c util.c capture.c
include $(BUILD_SHARED_LIBRARY)
説明
- LOCAL_PATH := $(call my-dir)
 - LOCAL_PATH: 現在のファイルがあるパス、$(CLEAR_VARS)ではクリアされない
 - my-dir: 最後にincludeしたmakefileが含まれるディレクトリを返す
 - include $(CLEAR_VARS)
 - CLEAR_VARS: LOCAL_XXX変数を消す
 - LOCAL_MODULE
 - モジュールの名前
 - LOCAL_SRC_FILES
 - ソースファイルのリスト(LOCAL_PATHからの相対パス)
 - include $(BUILD_SHARED_LIBRARY)
 - lib$(LOCAL_MODULE).so
 
その他
- http://www.kandroid.org/ndk/docs/ANDROID-MK.html に参照してください(英語)
 
参照
- http://developer.android.com/tools/sdk/ndk/index.html
 - http://www.kandroid.org/ndk/docs/OVERVIEW.html
 - https://sites.google.com/site/hippunosource/home/android/pureinsutorupuroguramunoandroid-mkno-shuki-fang
 - http://blog.makotokw.com/memo/android/android-ndk/
 - http://ameblo.jp/ekispresso/entry-10918205130.htmlAp
 - https://github.com/openxc/android-webcam