「Android NDK入門/演習」サポートページ目次へ
 このサイトの目次へ

「Android NDK入門」の内容をLinuxで実行する

 工学社刊/清水美樹著「Android NDK入門/演習」」( ISBN978-4-7775-1671-1/ ISBN978-4-7775-1672-8)の、著者によるサポート内容をご紹介します。
 本ページでは、「Android NDK入門」の内容を、Linuxで行う例を説明します。
 ただし、Linuxには多くの種類(ディストリビューション)があり、それぞれ少しずつ方法が異なりますから、本ページではそのうち2件の例を挙げます。

 最終更新日:2012年3月21日

Macでやりにくくなったら、仮想Linuxを使う選択もある

 MacでのNDK開発は別のページに説明してありますが、そこでも実感されるように、Mac OS X Lion, Xcodeなどが、「Mac/iOSアプリ開発」に重きを置きつつあり、「それ以外」のアプリ開発がだんだんやりにくくなってきています。
 そこで、Macが唯一の開発環境、という人は、Mac上で仮想のLinuxを動かすという方法もあります。
 Mac上で簡単にWindowsやLinuxなどの仮想環境を構築できる無料のツールがあります。Oracle社の提供する「VirtualBox」です。

VirtualBox ホームページ

 VirtualBoxの使用法は、後日筆者のページでも解説したいと思います。まずは、仮想/直接に関わらず、LinuxでどのようにAndroid NDK開発を行う環境を整えるかを述べることにします。

Ubuntuでの実行例

Ubuntuの入手

 Ubuntu Linuxは、使いやすさで人気のLinux ディストリビューションです。企業の「ネットブック」製品にプリインストールされた実績もあります。
 Ubuntuには、上記のVirtualBoxですぐに使えるハードディスク・イメージとして提供されている形式があります。 ダウンロードの容量は845MBほどですが、データの増加に合わせてハードディスクのサイズを最大100GBまで伸長できるようになっています。
 Ubuntuを入手するには、日本でUbuntu Linuxの管理・改善を行っている「Ubuntu Japanese Team」のホームページが最適でしょう。

Ubuntu Japanese Teamのホームページ

 すぐに「Ubuntuのダウンロード」というボタンが見つかるでしょう。それをクリックすると、「CDイメージ」あるいは「ハードディスクイメージ」を選ぶことができます。VirtualBoxでの動かし方の説明ページもありますので、簡単にMacやWindowsなどで一時的なLinux環境を得ることができるでしょう。

Linuxのコマンド入力は「コンソール」

 Windowsでは「コマンドプロンプト」、Macでは「ターミナル」と呼ばれる、コマンドを入力するためのアプリは、Linuxでは「コンソール」と呼ぶことが多いようです。デスクトップの種類によって「〇〇console」、「(KDEというデスクトップ環境なら)konsole」などと呼ばれたりします。アプリの分類としては「システム・ツール」という分類の中に入っていることが多いので、探してみてください。あるいは、デスクトップ上を右クリックするとメニュから「端末を開く」という項目が選べることもあります。

C/C++の開発環境

 上記で入手、インストールしたUbuntuの環境には、すでに、NDKアプリ開発に必要なC/C++の環境はインストールされています。
 ただし、Androidエミュレータを動かすのに、32bitのグラフィックライブラリが必要です。Ubuntuでは、これは「32bit用ライブラリ」の中にまとめられています。これは以前は「ia32-libs」という名前のパッケージでしたが、現在は「ia32-libs-multiarch」という名前になっています。

 「コンソール」を起動し、実行例1のコマンドで、「ia32-libs-multiarch」をネットワーク経由でインストールできます。インストールには、rootユーザのパスワードが必要です。
実行例1 「ia32-libs-multiarch」をコマンド操作によりインストールする
sudo apt-get install ia32libs-multiarch

JavaとAnt

 Android NDKの開発に必要な「JDK」は、「OracleのJDK」ならJDK 6でも動きますが、そのオープンソース版「openJDK」なら「7」以上が必要です。
 Ubuntuでは、openJDK7も、実行例2のように「apt-get」コマンドでインストールできます。
実行例2 「OpenJDK」をコマンド操作によりインストールする
sudo apt-get install openjdk-7-jdk

実行例2のopenJDK7のパッケージ名はどこで調べればいいの?」という方、ターミナルに「javac」と打ってみてください。あるいは「jdk」でも結構です。
 Ubuntuのターミナルは大変賢く、認識できないコマンドを入力されると、そのコマンド・ファイルが含まれているパッケージを自動で検索し、適当なものを選んでインストールするように促してきます。その中に、openJDK7に相当するパッケージ名が示されます。
Ubuntuでは、とにかくコマンドを打ってみると、それが含まれるパッケージの名前を検索してくれる

 同様に、Antも実行例3によりインストールできます。
実行例3 「ant」をコマンド操作によりインストールする
sudo apt-get install ant


以上のようにインストールすれば、これらを本書第5章で行ったように環境変数に加える必要は、ありません。

Android SDKとNDK

 Android SDKの入手先は、本書第4-2節(84ページ)に示した通りです。簡単には、次のURL:のページです。

URL Android SDKダウンロードページ
ダウンロード android-sdk_バージョン名-linux.tgz


 Android NDKの入手先も本書第2-2節(28ページ)に示してあります。簡単には、次のURLのページです。

URL Android NDKダウンロードページ
ダウンロード android-ndk-バージョン名-linux-x86.tar.bz2


 Windows版と異なり、Mac版の「Android SDK」は、インストーラ形式ではありません。
 SDK、NDKのいずれも、圧縮形式のファイルを展開します。そして、得られたフォルダを適当な場所に置きます。
 展開して得られるフォルダ名は、それぞれ「android-sdk-linux」と「android-ndk-バージョン名」です。
 本書及びそのサポートページの方針ですと、「SDK」のフォルダは、ホーム・フォルダに「java」というフォルダを作って、そこに置きます。
 そして、「NDK」のフォルダは、ホーム・フォルダに「myndk」というフォルダを作って、そこに置きます。

SDKマネージャの起動

 LinuxでSDKマネージャを起動するには、「SDKフォルダ」のさらに「tools」フォルダの中の「android」アイコンをダブルクリックします。
 すると、どのように操作するか尋ねるウィンドウが現れるでしょう。そこで、「実行」あるいは「端末内で実行」を選びます。
 しかし、AVDマネージャを直接開くアイコンはありません。「AVDマネージャ」を開くには、Windows においても本書第4-4節(96ページ)で行ったように、「SDKマネージャ」のメニュー「Tools」から「Manage AVDs」を開くのが、最も簡単な方法と思われます。

「.profile」の編集

 最近 は、Linuxのデスクトップでも、「.profile」などの「隠しファイル」は見えないように初期設定がされていますので、まず、隠しファイルを表示するように、ウィンドウ(Linuxでは、「ファイルブラウザ」と呼ばれることが多いようです。)を設定します。
 すると、すでに「.profile」というファイルが見つかるでしょう。それを、テキスト・エディタで開きます。Linuxのテキスト・エディタは、最初から、プログラミングなどがしやすいようにできています。
「.profile」のファイルにすでに書かれている内容は無視して、リスト1に示すような内容を書き加えます。
リスト1 「.profile」に書く内容の例
                                                   
export ASDK_HOME=$HOME/java/android-sdk-linux
export NDK_HOME=$HOME/myndk/android-ndk-r7b
export PATH=$PATH:$ASDK_HOME/tools:$ASDK_HOME/platform-tools:$NDK_HOME


Linux(Macもそうですが)では、環境変数の設定に「export」という「コマンド」を書いて行います。また、設定済みの環境変数を引用する場合は、頭に「$」をつけます。

 なお、リスト1では、SDKのバージョンは r16で、上記のようにホーム・フォルダの下に「java」フォルダを作ってそこに「SDKのフォルダ」を置いてあります。
 また、NDKのバージョンは「r7b」で、ホーム・フォルダの下に「myndk」フォルダを作ってそこに「NDKのフォルダ」を置いてあります。

openSUSEでの実行例

「Live CD」からのインストールがおすすめ

 openSUSEは「YaST」と呼ばれる統合管理ツールにより、ソフトウェアのインストールなどが容易に行える特長があります。
 openSUSEのダウンロードページのURLは、以下の通りです。以下のURLにより、自動的に「最新版のダウンロードのための、日本語ページ」に切り替わってくれます。

openSUSE のダウンロードページ

 openSUSEの全てのデータをダウンロードしようとすると、4.7GBものDVD用isoイメージをダウンロードしなければなりません。「NDK開発をしたい」という限られた目標の上で使うのなら、最低限のデータだけをインストールして、あとから必要なソフトウェアだけを追加するほうが効率的です。
 そこでおすすめなのが「ライブCD」です。ハードディスクにインストールしなくても、RAMディスクにCDの内容を展開し、一時的にOSを起動するしくみです。CDに収まるデータ量しかありませんから、ダウンロードが早く済みます。
 しかし、起動時にメニューを選択することで、普通のインストールディスクと同じように扱うことができます。選べるインストール条件は、言語(日本語)くらいで、さらなるインストール項目など細かい設定はできませんが、その必要もあまりないでしょう。

C/C++の開発環境を準備する

 さて、「ライブCD」からインストールした状態のopenSUSEには、、C/C++で書いたソースコードをビルドする環境はインストールされていません。
 そこで、追加インストールします。上記でもふれた「YaST」という総合管理ツールの中で「ソフトウェア更新」という項目を開いて、追加インストールするソフトウェアを選ぶことができます。
openSUSEの統合管理ツール「YaST」で、ソフトウェアの追加インストールを選択しているところ

 C/C++開発に必要なソフトウェアを全部選んでインストールしてしまえば間違いはないのですが、インストールするサイズが多くなりすぎます。
 筆者の調べたところでは、以下のソフトウェアを明示的に追加しておけば、NDKアプリをうまくビルドできます。

 Android SDKやNDKは32bit版なので、64bit版のLinuxをインストールした場合は、念のため上記のように、常に32bit版のパッケージとコンビで追加しておくとよいと思います。
他に必要なソフトウェアは、自動で追加されます。

JDKとAnt

 openSUSE12.1には、まだ「openJDK7」はパッケージとしてついていません。
 その場合は、本書の第4章で紹介したように、Oracleのサイトに行って、JavaのLinux版をダウンロードします。下記のURLのダウンロードページに行ったら、ダウンロードするものの種類として「JDK」を選んでください。

JDK (JavaSE)のダウンロードページ

JavaのLinux版には二通りあります。「RPM」形式と、「self-extact(自己解凍型)」形式です。
「RPM」形式は、rootユーザの権限で、一定のコマンドを打つ必要があります。インストールしたJDKに対しては、どのユーザも同様に「javac」コマンドなどを用いることができます。
 一方、「自己解凍型」は、Linuxにおける「SDK」や、「NDK」などと同様、適当なフォルダの中で展開します。これは、システム全体に影響を及ぼさずに、自分だけのJDKを用いることができます。

 ここでは、「自己解凍型」のJDK, 「jdk-7u3-linux-64.tar.gz」をダウンロードした例で考えます。
 展開すると、「jdk1.7.0_03」というフォルダになります。これを、自分のホームフォルダのすぐ下に作成した「java」フォルダの下に置くことにします。
 すると、環境変数JAVA_HOMEの値は、リスト2のように設定されることになります。
リスト2 自己解凍型のJDKを、自分で作った「java」フォルダ上に置いた
                                                   
export JAVA_HOME=$HOME/java/jdk1.7.0_03


「Ant」は、openSUSEのパッケージについているはずですが、本書第4-5節のようにAntの提供元からダウンロードしてもあまり手間は違わないと思います。
同じ「$HOME/java」フォルダに置くとすると、環境変数ANT_HOMEはリスト2のようになります。
リスト3 ダウンロードしたAntフォルダを、自分で作った「java」フォルダ上に置いた
                                                   
export ANT_HOME=$HOME/java/apache-ant-1.8.2

少し手間がかかったが、ちゃんとサンプルプログラムが起動した


 「Android NDK入門/演習」サポートページ目次へ
 このサイトの目次へ