高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

Android SDK環境をLinux上に構築するという話

作りたいアプリでTesseract-OCRを使うことになりました。
このライブラリにはAndroidバイナリがないため、Androidで使うためには独自にビルドが必要ですが、ビルドはどうもLinuxでしかできない(Cygwinではできない)らしいので、Linuxに開発環境を構築しなければいけなくなりました。
Linuxが絡むと大体泥沼にはまるのがわたしの常なのでLinuxには触れたくなかったのですが・・・。他にないのでしかたがない。

で、とりあえずWindows 8のHyper-VにCent OSを入れてみました。なぜCent OSなのかというと、Hyper-V 統合サービス(Linux Integration )というHyper-V用のサービスがMicrosoftより提供されていて、これがCent OSに対応しているため。スナップショットをとっておけばまずくなったときに復元できるので、比較的気は楽です。

で、とりあえずTesseract-OCRのビルドに成功。いろいろ右往左往したのであんまり覚えてないところもありますが、ひとまず手順をメモします。

Cent OS環境の構築

とりあえず環境を構築しLinux統合サービスをインストールするまではレガシーなネットワークアダプタしか使えず再設定の手間が生じるため、そこまでは一切ネットワークに接続しないつもりで。

  1. ひとまず、Cent OSのISOイメージを入手します。minimal.isoで構わないと思います。
  2. 仮想マシンを作成します。Hyper-Vマネージャーを起動して、仮想マシンの新規作成を行います。
  3. セットアップするISOイメージにISOイメージを設定します。
  4. 仮想マシンを起動し、画面の指示の通りにインストール処理を進める(メッセージは英語のみですが、ちゃんと読んで理解できるレベルだったと思います)
  5. インストールできたら、こちらの記事を参考にLinux統合サービスをインストールします。NICは何も刺さっていない状態になっていると思うので、Linux統合サービスまでで構いません。

ここまで終わったらいったん仮想マシンをシャットダウンします。この辺でスナップショットを作っておくと良いでしょう。

無線LANを使っている場合

Hyper-Vを使うPCで無線LANを使っていた場合は、ネットワークアダプタを設定する前に内部向け仮想ネットワークアダプタを作っておく必要があります。

  1. 仮想スイッチマネージャを開き、「新しい仮想ネットワークスイッチ」として、「内部接続」のスイッチを作成する。このスイッチにはわかりやすい名前をつけておいてください(自分は「無線LAN用」とという名前をつけました)
  2. 「ネットワークと共有センター」を開き、アダプターの設定の変更から、さきほど作ったアダプタとWi-Fi接続をブリッジ接続します。

しばらくたってWi-Fi接続出来るようになったらOKです。

仮想マシンの最低限の設定を行う

仮想マシンをネットに繋げるようにして、Cent OS標準アプリインストールサービスyumを使えるようにします。

  1. 仮想マシンの電源を切った状態で、設定画面を開きます。
  2. ネットワークアダプタを設定します。有線LAN接続の場合はそれぞれに該当するアダプタ、無線LAN接続の場合は先に作成した無線LAN用のアダプタを指定します。
  3. 仮想マシンの電源を入れて、次の三つのファイルを編集します。この辺は環境によって値が大きく変わる部分ですので、各自検索の上使用されることをお勧めします。なお、DHCPサーバを使うと色々と面倒になりますので独自でIPアドレスを指定してしまうのがオススメです。
  4. 設定が終わったら一度仮想マシンごと再起動させて、次のアプリをインストール(なお、Cent OSにはSSHが最初からインストールされていますので、このあたりからはSSHクライアントを使って操作しても良いはずです。Poderosaなどだと文字の選択や複数コンソールの表示も出来るようになりますので便利です)
古いJDKが入っていた場合

OpenJDKなどの古いJDKバージョンが入っていた場合、JAVAがうまく認識されない場合があります。その場合は次のようにして対応します。

mv /usr/bin/java /usr/bin/java.old
ln -s /usr/java/default/bin/java /usr/bin/java

Android SDK/NDKのインストール

GoogleからLinux用のSDK/NDKバイナリを入手します。入手したものはConfigure Android SDK on CentOS 6 x86_64 - echocat - echocatなどを参考に展開・配置します。
GUIを使わないでセットアップする方法はAndroidの会のMLにありました。次のコマンドを利用します。

android update sdk -t platform -u
android update sdk -u

結構時間がかかるのでお茶でも飲んで待ちましょう。


とりあえずここまででAndroid SDKのビルド環境は完成しました。いろいろ迷走の上書いているのでどこか抜けているところはあるかもしれません。
とりあえず分からないところがあればTwitterなどで聞いていただければ答えられるかもしれません。


Tesseract-OCRの動作についてはとりあえずビルドはで来たもののうまく動作していない状態(エラーは出さないものの動作もしない状態)。まだうまく出来てないので、でき次第書こうかと思います。