涙目ブログ

アクセスカウンタ

zoom RSS AndroidでOpenCV 前編 ネイティブ環境設定

<<   作成日時 : 2010/03/03 00:39   >>

ナイス ブログ気持玉 1 / トラックバック 2 / コメント 0

だいぶ前に、Androidのカメラが使えない記事を書きましたが、
それはJavaのみで、ネイティブは使っていませんでした。
いつかネイティブを試そうと思うついでに、そのネイティブとやらを使えばOpenCVも動作するとのことで、
挑戦してみます。
バグもあるし、あのインターフェイスじゃ変わりようがないとは思いますが(T_T)

端末:HTC-magic( Google Developer Day 2009で配られた試作品。 HTC-03Aと同型)
開発環境:Eclipse Version: 3.4.2 Build id: M20090211-1700 + android-sdk-windows-r04 + android-ndk-1.6_r1
開発OS:Windows Vista sp2

命題:
1.Androidのネイティブ環境を整えよ(前編の記事)
2.OpenCVの開発環境を整えよ(中編の記事)
3.ネイティブを使ってARに挑戦せよ(後編の記事)

結論だけ書くと、1.2.は簡単にできます。(Googleさん流石です。すごいのはLinuxですが)
3.は前回と変わりません。

Androidのネイティブ環境を整えよ。
その際にネイティブ部分を_Eclipseで開発できるようにし、既存のJavaのAndroid開発にも
簡単に適用できるようにすること。


やることリスト
1.cygwinを設定
2.ndkをダウンロードしインストール
3.Eclipse(C/CPP)の設定
4.build.batの拡張

3.と4.はおまけです。
OpenCVだけを目指すならば、1.と2.で十分です。

1.cygwinを設定
 Eclipse+cygwin+OpenCVの開発環境があれば、何もする必要はありません。
 ない方はインストールしましょう。

2.ndkをダウンロードし解凍
 以下よりダウンロード。
 http://developer.android.com/sdk/ndk/1.6_r1/index.html
 そして好きな場所に解凍。
 最新版があれば、そちらをダウンロードすればよいと思います。
 ダウンロード後にcygwinでndkルート/build/host-setup.shを動かします。

 参照:
 http://developer.android.com/sdk/ndk/1.6_r1/index.html

 この時点で、CygwinでのCUI コンパイルは可能です。
以降はおまけです。

3.Eclipse(C/CPP)の設定
 Eclipseは自動でメイクファイルを書いてくれますが、ndkはGoogleが提供した
 メイク方法にのっとる必要があります。
 なので、Eclipseのメイクファイルプロジェクトを使用し、コンパイル環境を作成します。
 以下のようにbuild.batを作成し、環境を構築します。

 http://www.次世代創造機構.jp/android/androidLecture/firstNDKApplication/firstNDKApplication.html
 (参考にさせて頂きました。非常に有用な情報をありがとうございます)

 ソースの配置は上記と異なります。
 ソースは以下のように配置します。
 ndkルート/apps/プロジェクト名/
  Application.mk
  jni/
   Android.mk
   source.cpp
   ・・・

  上記のようにjniディレクトリを作成し、その配下にAndroid.mkとソースファイルを格納します。

4.build.batの拡張
 ndkはndkルート/apps 配下のディレクトリのApplication.mkとjni/Android.mkを参照します。
 なのでネイティブ開発は、ndkルート/appsに配置したほうが楽です。
 ただし、Androidそのものの開発環境はndkの中に格納するべきではありません。
 ndkを使わないAndroidアプリと格納フォルダが分散するのも好ましくありませんし、
 nativeを使わないのにndkフォルダに格納するのも変です。
 なので以下のようにします。

 ・ndkの中はsoファイルを作成するためのソースを格納する。
 ・soファイルができたら、Android開発環境へsoをコピーする。
 ・コンパイルエラー時や、Android開発環境がないときはコピーしない。
 
 具体的には以下のようにします。

@echo off
if "%1"=="" goto end
set NDK_ROOT=D:\tools\android-ndk-1.6_r1
set DIST_ROOT=D:\pg\eclipseWork\ide_Java\%1

cd %NDK_ROOT%
make APP=%1
if not %ERRORLEVEL%==0 goto end
if not exist %DIST_ROOT% goto end
robocopy /E .\apps\%1\libs %DIST_ROOT%\libs
:end
echo on

 NDK_ROOTとはndkを解凍したルートディレクトリで、
 DIST_ROOTとはAndroidの開発環境のプロジェクトルートディレクトリです。
 各人の環境で違うので修正してください。
 また、ndkのプロジェクト名とAndroidのプロジェクト名を一致させる必要があります。

 ndkのmakeは成功すると0、エラーがあると0以外の値がerrorlevelに設定されるので、
 コンパイルの成功か失敗を判定できます。
 そして、DIST_ROOTが存在すれば、libsごとコピーします。

 これで、ndk配下はEclipse(c/cpp)でコーディングし、
 AndroidはEclipse(Java)の既存の環境でコーティングできます。
 また、soファイルがndkコンパイル時に自動でコピーされるので、soファイルの更新し忘れも減ります。

3.と4.はおまけです。
OpenCVだけを目指すならば、1.と2.で十分です。

これでndkの設定ができました。
次はいよいよOpenCVです。
こちらも偉大なる先人様のおかげで簡単にできます。

それでは。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 1
ナイス

トラックバック(2件)

タイトル (本文) ブログ名/日時
AndroidでOpenCV 中編 OpenCV開発環境設定
AndroidでOpenCVの続きです。 中編て変な響きですね。 序破急とかにすればよかったかも(T_T) ...続きを見る
涙目ブログ
2010/03/03 22:54
AndroidでOpenCV 後編 ネイティブを使ってAR
AndroidでOpenCVの後編です。 やってみましたが、OpenCVどころではありません。 そもそものAndroidのカメラ制御が悪すぎて手の施しようがありません(T_T) ...続きを見る
涙目ブログ
2010/03/04 22:23

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
AndroidでOpenCV 前編 ネイティブ環境設定 涙目ブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる