最近のAndroid開発環境(NDK r9b)の構築


最近NDKのほうも更新が進んで r9b が出ているようです。
以前の状況と結構変わっているようなので再度セットアップしてみました。

googleからダウンロードしたら、前回ADT bundleのeclipseの場所に展開します。
sdkフォルダがあるところに、android-ndk-r9b として展開します。
そして、環境変数 NDKROOT を作成し、この場所をセットしておきます。
環境変数 PATH に、このパスを追加しておきます。
ユーザー環境変数PATHが存在しなければ、作成して%NDKROOT% と入力しておきます。

env-ndk-root

そして、eclipseを起動して、Window/Preferences を開いて、Android/NDK の項目を開きます。
ここに NDK Location とあるので、先ほどNDKを展開したパスを設定します。

ひとまず設定はこれでOKです。
続いてサンプルの動作を確認してみようと思います。

サンプルの動作確認

NDKの中にはsampleが入っているので、これをeclipseで読み込ませて、ビルド&実行をしてみたいとおもいます。実行できる環境(エミュレーターやデバイス)を準備しておいて下さい。

メニューFile/New/Otherを選び、Android Project from Existing Code を選びます。そしてNDKに含まれているsampleを指定します。ここでは定番のhello-jni サンプルを指定したとします。
Projects でtestsは今不要ということでアプリ本体だけ使うので、こちらだけにチェックを入れてプロジェクトを作成します。
また、自分はNDK展開先フォルダが汚れるのがいやなので、対象をコピーするように設定しました。これが Copy projects into workspace にチェックが入っている理由です。

import-project-ndk

これでプロジェクトを作成し、Java パースペクティブで開くとこのようになります。

hello-jni

コマンドプロンプトでこのプロジェクトのフォルダを開きます。上記の通りにインポート時にコピーしていれば自分のWorkspaceフォルダの中に HelloJni フォルダができていることとと思います。ここをコマンドプロンプトで開きます。
そして、ndk-build とタイプして実行します。これでC/C++コードのコンパイル&リンクが実行されます。
うまくいかない場合には、環境変数 NDKROOTやPathに設定したものを確認して下さい。また、コマンドプロンプトをスタートメニューから開きなおしてみて下さい.
ndk-build-result

そして、Eclipseで F5(Refresh)を押すと、HelloJniの中に obj,libsの項目が増えています。これを開いてみると、libhello-jni.so ができていることがこちらでも確認できます。

実行するには、プロジェクトを右クリックして Run As/Android Applicationを選びます。

・・・

しかし、現在の状態ではこんなエラーが発生しました。

Unable to execute dex: java.nio.BufferOverflowException.
 Check the Eclipse log for stack trace.
Conversion to Dalvik format failed: Unable to execute dex:
 java.nio.BufferOverflowException. Check the Eclipse log for stack trace.

どうやら最新のSDKパッケージだとこのエラーが出るようです。
Android SDK Build-tools Rev 19でエラーが出るようで、これを 18.1.1 あたりに戻すことで回避できるとのことです。Android SDK Managerを開いて、18.1.1をインストールし、19を削除しておきます。

再度 Eclipseでメニューから Project/Cleanを実行します。
そして、Run As/Android Application で実行を行います。まだダメなようならばeclipseを一度終了し、再度eclipseを起動してリトライしてみて下さい。

自分の環境ではこれでHello-Jniが実機上で動作するところを確認しています。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする