連載
» 2013年01月21日 10時10分 UPDATE

実践しながら学ぶ Android USBガジェットの仕組み(9):世界初!? AndroidエミュレータでUSB接続環境を構築する! (1/3)

あれから数カ月……。われわれは苦心の末、ようやくホストPCとUSB接続できる「AndroidエミュレータUSB接続環境」を完成させた。今回は、環境構築の詳しい手順と利用方法を紹介する。

[村上雅彦、舟元拓斗、森崇(永和システムマネジメント),MONOist]

1.はじめに

 現在、われわれが開発している「PCRescuroid」(注1)というアプリは、壊れてしまったホストPC内にあるHDDのデータを救出するものであり、ホストPCとAndroidをUSB接続することを前提としています。

 PCRescuroidの実現には、Androidフレームワーク層、Linuxカーネル層の改造が必須であるため(注2)、改造したソースコードをいきなり実機上でデバッグするのは困難であることが容易に想像できます。

 そのため、われわれはAndroidエミュレータ上でデバッグしてから、実機上で動作確認するのが妥当だと判断しました。しかし、現時点で“AndroidエミュレータのUSB接続”は、Google公式サイトでサポート対象外であることが正式にうたわれています。

 前回、この問題に立ち向かうべく、Androidエミュレータを改造し、USB接続/切断までを何とか実現できました……が、USBの接続先となるホストPCについては改造し切れずにいました。

 それから数カ月が経過し、われわれは苦心の末、ようやくホストPCとUSB接続可能となる「AndroidエミュレータUSB接続環境」を完成させました。

 今回は、このAndroidエミュレータUSB接続環境の構築方法と利用事例を紹介します。なお、本環境は表1に挙げた開発者の方々を対象に、今後も機能拡張などを検討していく予定です。

対象開発者 利用シーン
Android LinuxカーネルのUSBガジェットAPIを使用するUSBデバイスドライバ開発担当者 Android端末で直接動作確認すると、デバッグコストが掛かる場合
Android端末(実機)の不足により、Androidエミュレータ上で動作確認・テストを行う場合
表1 対象開発者と利用シーン

※注1:詳細は、連載第6回「緊急事態発生!? 起動不能になったPCをAndroidで救出せよ!」を参照ください。

※注2:詳細は、連載第7回「Androidアプリケーションフレームワーク層を改造しよう!」を参照ください。


2.AndroidエミュレータUSB接続環境の構築方法

 AndroidエミュレータUSB接続環境の構成は図1の通りであり、AndroidエミュレータとUSB接続する対象は“仮想マシン”としています(注3)。

AndroidエミュレータUSB接続環境の構成 図1 AndroidエミュレータUSB接続環境の構成

 現時点でのAndroidエミュレータUSB接続環境の動作環境とAndroid対応バージョンは、表2の通りです(注4)。

動作環境 OS Ubuntu 10.10
必要空きスペース 30Gバイト以上
Androidエミュレータ 対応バージョン 2.1
表2 動作環境および対応バージョン

 本環境の構築から起動までの流れは、表3の通りです。以降で順番に説明していきます。

No. 作業内容
1. ビルド環境の構築
2. AndroidエミュレータUSB接続環境のダウンロード
3. AndroidエミュレータUSB接続環境のビルド
4. AndroidエミュレータUSB接続環境の起動
表3 本環境の構築から起動までの流れ

※注3:このあたりのいきさつは、連載第8回「AndroidエミュレータとPCをUSB接続せよ!」を参照ください。

※注4:現時点では、対応するバージョンが少ないですが、随時拡大していく予定です。なお、ご使用のPCのOSが該当しない場合は、デュアルブート可能な環境を構築することで対応できます(詳しくは、連載第1回「Android USBガジェットを使ってみよう!」を参照ください)。


2.1.ビルド環境の構築

 AndroidエミュレータUSB接続環境をビルドするためには、JDK(Java Development Kit)とその他のパッケージが必要となります。

JDKのインストール:

$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu hardy main multiverse"
$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu hardy-updates main multiverse"
$ sudo apt-get update
$ sudo apt-get install sun-java5-jdk
JDKのインストール方法

パッケージのインストール(64bitマシンの場合):

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
  x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
  libxml2-utils xsltproc
$ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
パッケージのインストール方法【64bitマシン】

パッケージのインストール(32bitマシンの場合):

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl zlib1g-dev libc6-dev libncurses5-dev \
  x11proto-core-dev libx11-dev libreadline5-dev \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
  libxml2-utils xsltproc
パッケージのインストール方法【32bitマシン】

2.2.AndroidエミュレータUSB接続環境のダウンロード

 AndroidエミュレータUSB接続環境では、Androidエミュレータと仮想マシンが必要となります。これらの構成要素は表4の通りです。なお、バイナリをそのまま使用可能なものと、ソースコードからビルドしなければならないものとがあります。

No. 分類 構成要素 ビルド要否
1. Androidエミュレータ 改造版・Androidエミュレータ 必要
2. 改造版・Linuxカーネルイメージ 不要
3. 仮想マシン 改造版・仮想マシン(QEMU) 必要
4. OSイメージ 不要
表4 構成要素

 ここでは、バイナリ/ソースコードのダウンロード方法について説明しますが、ソースコードに関してはビルドが必要となりますので、「2.3.AndroidエミュレータUSB接続環境のビルド」を参照ください。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.