「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アプリをうまくビルドできます。
- gcc(64bit版OSをインストールした場合、32bitもいっしょにインストール)
- gcc-c++(64bit版OSをインストールした場合、32bitもいっしょにインストール))
- make
- zlib-と名のつくパッケージ
- xorg-x11-と名のつくパッケージ(特に、32bit版がないと、Androidエミュレータの起動時にエラーになる)
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入門/演習」サポートページ目次へ
このサイトの目次へ