2012年01月20日

Android NDKサンプルプログラムのビルドについて〜その2〜

ハイブリッドエンジニアのNILです。

今回は後編ということで、サンプルプロジェクトのインポート、実際にビルドしてみたいと思います。

サンプルプロジェクトのインポート
 展開したAndroid NDKの以下の「c:\Android-ndk-r7\samples」の配下に、サンプルプロジェクトが格納されています。
 今回は、一番簡単なサンプル「hello-jni」を動かしてみます。
 eclipseを起動し、次の手順でプロジェクトに設定します。
「ファイル」→「新規」→「Androidプロジェクト」
表示される「新規Androidプロジェクト」において、次のように設定します。
プロジェクト名:HelloJni
外部ソースからプロジェクトを作成:チェック
ロケーション:C:\android-ndk-r7\samples\hello-jni
1.JPG
図1新規Androidプロジェクトダイアログ

「次へ」を押下すると、「ビルド・ターゲット」の選択画面が表示されるので、自分の開発環境に合わせたターゲットを選択してください。(私はAndroid 2.3.3にしました。)
完了すると、eclipseのパッケージ・エクスプローラーに、「hello-jni」が追加されます。
2.JPG
図2 hello-jniプロジェクトが生成された状態

これでサンプルを動かせそうな感じですが、この段階では、肝心のネイティブソースがビルドされていないため、実行してもエラーになります。

ネイティブソースのビルド
現状ではネイティブソースのビルドをeclipseから行う公式の方法はありません、ネイティブソースをビルドするために、cygwinのターミナルに戻り、カレントパスを、プロジェクトのフォルダ直下に移動します。
$cd /cygdrive/c/android-ndk-r7/samples /hello-jni
移動したら、ndk-buildとコマンドを入力します。
実行結果は以下のようになります。
3.JPG
図3 ndk-buildの実行結果

 eclpseで、hello-jniのプロジェクトをリフレッシュ(F5)すると、libsフォルダとobjフォルダが追加されています。
4.JPG
図4 ネイティブビルド完了後のプロジェクト

これで準備完了です。
hello-jniプロジェクトを実行すると、次のような実行結果が得られます。
5.JPG
図5 hello-jni実行結果

サンプルの修正
 折角なので、ちょっとだけサンプルを改造してみます。
 hello-jniは、ネイティブ側のCプログラム内で「Hello from JNI!」の文字列を設定し、JNI経由でその文字列を受け取りJava側で表示を行っています。
Cのソースファイルを修正し、表示される文言を変更してみます。
修正するソースファイルのパスは、以下になります。
C:\android-ndk-r7\samples\hello-jni\jni\hello-jni.c
eclipseで編集しても良いですが、私はviが好きなのでcygwinのターミナルから直接編集しました。
6.JPG
図6 ソースファイルの修正例

表示される文言を「Hello from JNI !」から「Techno Brain」に変更しました。
(※サンプルソースは読み出し専用属性になっているので注意してください。)
ファイルの修正が終わったら、もう一度「ndk-build」と「リフレッシュ」の手順を行います。
修正が完了したhello-jniを実行すると、以下のように修正が反映されました。
7.JPG
図7 修正後の実行結果

他のサンプルも同様の手順で動かすことが可能です。
色々と試して、NDKを使いこなしてみてください。

以上です

posted by てくてく at 00:00| Comment(2) | 技術ーAndroid | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
〜放射能被害から子どもたちを守ろう!
 自然エネルギーへの転換をめざして
 みんなの力で東海第2原発の再稼動はやめさせましょう!
Posted by Jimmy Choo Shoes at 2012年04月19日 12:14
正しい使い方をして、尚且つ、
「ヤッパリ、チューブアンプじゃなくちゃ」
って思うのは、それはそれで「有り」だと思いますが。
Posted by isabel marant sneakers at 2012年04月21日 12:30
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。