eclipse + ADT-21.0.x + Android Native Development Tools(r8d)

2013年1月26日

Android Terminal Emulator
公式のものでは無く、ユーザーが作成した物です。Google Playに登録されているので、ありがたく使わせていただきましょう。
機能不満が出たら自作するという事で…。
Android Terminal Emulator for Google Play

そして、こういった物があると、ARMネイティブの開発環境が欲しくなってしまうわけです。

Androidが公式に動くとしているプラットホームはARM(v5以降)、MIPS、x86となっていますが、シェアの大半はARMv7とされています。他のアーキティクチャをクロスコンパイルするにしてもARMネイティブの開発環境を導入することにマイナス要素はありません。
当然ながら、ARM社も独自にコミュニティを立ち上げていて、以下のような物が存在します。

Google AndroidとChrome OSサポート – ARM
http://www.arm.com/ja/community/software-enablement/google/index.php
AndroidソリューションセンターでARMのあらましを参照したら、Advanced Application Developmentへ、
Advanced Application Development – ARM
http://www.arm.com/ja/community/software-enablement/google/solution-center-android/getting-started-test-19429.php
DS-5 CEというネイティブ開発ツールで次のレベルへ、という感じの出だしで始まっていますので、これを入手しましょう。

DS-5 コミュニティエディション – ARM
http://www.arm.com/ja/products/tools/software-tools/ds-5/community-edition/index.php
DS-5_CE_intro
小規模中小や個人は、フリーのコミュニティエディションが使えるようです。年間売り上げも関わってくるのですが、まずは関係ないという事で導入しましょう。
DS-5 CEインストール – ARM
http://www.arm.com/ja/products/tools/software-tools/ds-5/community-edition/ds-5-community-edition-install.php
Android ADT Bundleのeclipseのバージョンは3.8、JDKは7とバージョンが上がってしまっていますが、物は試しで、このまま導入してしまいます。
統合するための、eclipseのpluginについては後述します。
Android NDK | Android Developers
http://developer.android.com/tools/sdk/ndk/index.html
ダウンロードを開始すると、ページの項目がInstalling the NDKまでスクロールします。
ダウンロードしたファイルを解凍とあるので、Android ADT Bundleのフォルダへ解凍することにします。
ふと中身を調べてみようと思い立ち、
NDK_first
どうやら解凍するだけで必要ファイルは全てそろい、コマンドプロンプトなら、NDKルートのndk-build.cmdを実行すれば環境をセットアップし、プロジェクトをビルドしてくれます。
……、ここで、DS5要らないじゃんなどと思ってしまう自分は、恐らく俄かなのでしょう;p

eclipseと連携するためのNDK Pluginは、eclipse のHelpメニューのInstall New Softwareから追加可能です。
201220_ADT_on_NDK_install
 201220_ADT_on_NDK_2
このように、Android Developer Tools Update Siteのリポジトリを選択

201220_ADT_on_NDK_3

出てきたリストからNDKを選択するわけですが、Developer Toolsも更新があるようなのでチェックを入れておきます。

201220_ADT_on_NDK_4
各プラグインモジュールのリストが表示され、

201220_ADT_on_NDK_5
ライセンスおよび使用許諾に合意しするとインストールが始まります。

そして…、
20121220_repos_error
リポジトリのエラーで怒られました;p。
どうやらリポジトリにファイルが無いというよりアクセスが出来ていなかったようで、
Using the NDK plugin – Android Tools Project Site
http://tools.android.com/recent/usingthendkplugin
ここに書かれている通り、リポジトリはhttpアクセスではなくhttpsでアクセスしないといけません。"Available Software Sites"のダイアログから設定を編集します。
20121220_modify_AvaiableSoftwareSites
20121220_add_CDTrepos_AvaiableSoftwareSites
ついでにUsing NDK Pluginのページにある通り、CDT(C/C++ Development Tools)のリポジトリもここで追加しましょう。CDTの解説がデッドリンクになっているのでリポジトリ設定を乗せておきます。エラーが出る場合はここで不要なサイトのチェックを外します。
Name: CDT
Location: http://download.eclipse.org/tools/cdt/releases/indigo
以上で登録します。
20121220_CDT_install_AvaiableSoftwareSites
先ほどのNDK Pluginに加えて、CDT Main Featuresも選択し、インストールを行います。

インストールが終了したら、先ほどのページの指示通りNDKのパスを設定します。SDKはそもそもバンドルされているため、設定は済んでいます。
201220_NDKPath_setting
これでネイティブのビルド環境が整いました。

確認のためにビルドを行います。
android-ndk-r8cのsamplesからHelloJniのクローンを作成して作業することにします。
FileメニューからImportを選択、画像のようにインポート設定を行います。
20121220_import_hello_jni
これで自分のワークスペースにHello jniの複製が出来上がりました。
サンプルを元に、色々と弄り倒してみるのもいいでしょう。
なお、このままの状態で、cやc++のソースコードを参照すると、コードエディタの構文チェック機構でSyntacs Errorが出ます。修正方法は、Project Explorerからプロジェクトのポップアップメニューを出し、Android Tools > Add Native Support…を実行する。すると、プロジェクトが作り出すモジュール名を指定するダイアログが現れるので、これを設定すると、ネイティブライブラリを出力するプロジェクトが出来上がる。これは1からプロジェクトを作成しても同様です。

では、さっそく実行してみますが、今回は前回の反省を踏まえ、AVDでNexus One相当のデバイスを構成しました。
20121220_AVD_NexusOne
スクリーンショットを考えるとこれ位が妥当です。実機でこの手の小さなアプリのテストをすると、あとで削除するのが大変なので、手軽に消去できる仮想端末はやはり必要です。

20121220_ADT_NDK_Debug
ツールバーのDebugからプロジェクトを選択すると、Native部分のコードがコンパイルされ、端末にパッケージが転送され、実行されます。デバッガを停止させると端末側のアプリも止まります。

以上でeclipse + ADT + NDKの環境が整いました。
次回はこれに、ARM社のDS-5 CEを加えて、ARMプロセッサの緻密なデバッキングを行えるようにします。