2012年6月29日金曜日

NDK & OpenCV

Android NDK をc¥にインストール
cgwin をインストール
(最近はcgwinはいらないようだ)
  make,gccを指定
/home/(user)/.bashrcの最後に
export ANDROID_NDK_ROOT=/cygdrive/c/android-ndk
   export PATH=$PATH:$ANDROID_NDK_ROOT

OpenCV(バイナリ)とAndroid projectは同じフォルダ、かつスペースの無いフォルダ名。すなわちMy Documentの下はだめ。

プロジェクトのjni/Andorid.mk修正
 
include ../OpenCV/share/openCV/OpenCV.mk <<下をこれに変える
#include ../includeOpenCV.mk
#ifeq ("$(wildcard $(OPENCV_MK_PATH))","")
#    #try to load OpenCV.mk from default install location
#    include $(TOOLCHAIN_PREBUILT_ROOT)/user/share/OpenCV/OpenCV.mk
#else
#    include $(OPENCV_MK_PATH)
#endif

cygwinウィンドウ またはコマンドウインドウでもよい
プロジェクトのTOPフォルダへ移動
C:\android-ndk\ndk-build

  /obj/local/armeabi-v7a/libgnustl_static.a: No such file: Permission denied
 このエラーが出たら
  chmod 777 obj/local/armeabi-v7a/libgnustl_static.a
   で再度ndk-build

\OpenCV-2.3.1\libs\armeabi-v7a内のライブラリはbuild時に参照するが、
apkインストール時には重複エラーになるので、名前を変えておく。
必ずbuild前には戻すこと。

注意)
cソースのJNIEXPORT void JNICALL文の関数名にプロジェクト名とクラス名が含まれているので、これらを変更したときは、ndk-buildをし直す必要がある。

例)
JNIEXPORT void JNICALL Java_com_androidgroup_nyartoolkit_ARToolkitDrawer_decodeYUV420SP(JNIEnv * env, jobject obj, jintArray rgb, jbyteArray yuv420sp, jint width, jint height, jint type)

0 件のコメント:

コメントを投稿