jumble

アクセスカウンタ

zoom RSS Android エミュレータの現状

<<   作成日時 : 2012/05/01 08:26   >>

ブログ気持玉 0 / トラックバック 1 / コメント 0

Android エミュレータの現状


久々のAndroidネタ。
ここしばらく、Androidからは遠ざかっていた。
理由は、
・3.0の時にソースコードが公開されなかった。
・一般的なマシンではビルドができなくなった。
などでモチベーションが下がったというのも一因だ。
でも、それらはどちらかというと些細なことで、一番大きな理由はエミュレータだ。
4.0から、スマートフォン・タブレットの両方を統一されたAPIで開発できるようになったのはうれしいのだが。
でも、エミュレータが・・・。
とにかく遅い。
いや、遅かった。
特に、タブレットに相当するWXGAの大きさの場合はひどかった。
それは、「遅くてイライラする」というレベルではない。
「遅いのかそれともフリーズしてるのか分からない」というレベルだった。
実際、エミュレータを起動して、一風呂浴びて(たぶん30分くらい後に)戻ってきても、まだ起動画面のままだったこともある。
要するに使い物にならないのだ。
エミュレータが使えないということは、実機を持っていない自分はテストできないということである。
一つの回避策としては、VMWareやVirtualBoxなどの仮想化技術を使うという手がある。
Androidの端末を仮想マシンとして作成するという方法だ。
この場合、動作スピードは素晴らしく速い。
これについては、次の記事で書くことにする。
ただその方法では、例えば「端末を回転する」ことはできないし、大きさも一意に決定されてしまう。
多様な機種を想定したテストができないのだ。
やっぱり、純正のエミュレータでテストするに越したことはない。
ということで、エミュレータが使えないのでやる気が起こらなかった。
その上、Linux関係でいろいろな苦労が発生したので、Androidは放置していたのだ。
そんな折、こんな記事が目に入った。
Androidのエミュレータが高速になったらしい。
ふーん。
じゃあ、いじってみようか。
今、開発で使用するOSは、いろいろあった結果Fedora 16がメインになっている。
Androidの環境作成の方法はここには書かないので、他のサイトを参照してね。
入れたのが、今現在の最新バージョンであるAndroid SDK r19。
ダウンロードするファイルはr18なのだが、その後の追加インストールでr19にアップデートされるようだ。
で、やってみた結果・・・。
ふむふむ。
いちばん大きいWXGA800でも、ちゃんと起動するではないか。
まあ、それでも初回の起動は1、2分はかかるが。
動作も、「速い」という感じは正直しないが、使い物にならないほど遅くもない。
ただ、どうみても上のページで紹介されているようなスピードではない。
で調べてみると、仮想端末の設定が必要らしい。
仮想端末の新規作成時、もしくは編集で、Hardware項目の"GPU emulation"をyesにする。
この"GPU emulation"は、デフォルトでは項目そのものがないので、"New"から追加する必要がある。
このページなどを参照。
そうすると・・・。
おお、確かに速い。
上のページの紹介通りだ。
ちょっとこれには、感動した。
ただし、GPU emulationを使わなかった場合に比較すると、画面が結構汚い。
まあ、我慢できないほどでもないが。
うーむ。
これはかなりの進歩だろう。
GPU emulationが無効のままでもそれなりに動作するし。
ただ、ちょっと残念なことがある。
エミュレータが描画するキーボードは問題ないのだが、パソコンにつながっている物理キーボードからの入力がおかしい。
どうおかしいかというのが、一言では説明できないくらい変な現象が発生する。
・'a'を打った場合、ウムラウトや^、~、'、`などが上についた、おそらくラテン文字の候補がポップアップされる。
・それをキャンセルしても、何かを選択しても、その後'a'のキーは反応しなくなる。
・'b'を打った場合、'b'が連続して限りなく入力されてしまう。
・一応バックスペースキーでそれは食い止めることができる。
・その後は、'b'のキーが反応しなくなる。
・どのキーも、'a'か'b'かどちらかのパターンになり、結局それ以降、そのキーは反応しなくなる。
なんだこの現象は?
ちなみに、仮想端末をどのバージョンで作っても同じだ。

で、どの環境で起こるのか試してみた。

まず、Windowsだと起こらない。
ただし、WindowsではGPU emulationは使用できないようだ。
GPU emulationをyesにした仮想端末を、Virtual Device Managerから起動した場合、いつまでたっても端末画面が真っ暗なまま。
XP、Vista両方ともやってみたが、同じ。
どうも、どこも同じみたいだ。
ここ参照。
仮想端末をコマンドプロンプトから起動すると、次のように出力され、GPU emulationが無効な状態で起動される。

C:\xxx\android-sdk\tools > emulator-arm -avd XXX
emulator: ERROR: Could not load OpenGLES emulation library: Could not load DLL!
emulator: WARNING: Could not initialize OpenglES emulation, using software renderer.

どうも、OpenGLESのライブラリがないといっているようだ。
苦労して準備すれば動くのかもしれないが、自分はWindowsで開発する気はないので、放置。
ちなみに自分の環境だと、WXGA800の仮想端末も、デフォルトのままだと起動しなかった。
これは、GPU emulationは関係ない。
コマンドラインから起動してみたのが次。

C:\xxx\android-sdk\tools > emulator-arm -avd XXX
Failed to allocate memory: 8

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

仮想端末の設定で、Device ram size を 1024 から 512 に変えると無事起動した。
このページ参照。

GPU emulationはいいとして、とりあえず物理キーボードからの入力の問題はWindowsだと起こらないようだ。
そうすると、これはLinux固有の問題か?
ということで、ダメもとでUbuntuでやってみた。
最初、エミュレータをはじめ、Android SDKのツール類が全く動かなくて、あせった。
例えば次のようなメッセージが出力される。

/xxx/yyy/android-sdk/tools/emulator-arm: error=2, そのようなファイルやディレクトリはありません

でも、実際は存在するのだ。
で調べて・・・。
そうだ。
Ubuntuでは32-bit用のライブラリを準備する必要があるのだった。
このページ参照。
ビルドではなく、単なるアプリ開発でも必要なんだっけ?
ということで、次を実行。

# apt-get -y install ia32-libs

とりあえず、普通のことはできるようになった。
で、物理キーボードの入力問題は・・・発生しない。
GPU emulationも機能する。
要するに、全てがうまくいくのだ。
うーん。
やっぱり、AndroidがUbuntuを開発のターゲットマシンにしているだけのことはある。
そうか、キーボード入力の問題はFedora(もしくはRedhat系全般かもしれない)固有の問題なのか。
そうすると、原因追及もしくは回避策を調べるのも至難の技だな。
これは、恐らく自分の力では解決不可能っぽい。
自分がやってみた範囲で現状をまとめたものが次。

Fedora 16Ubuntu 11.10Windows(XP,Vista)
物理キーボード×
WXGA800仮想端末  △ ※
GPU emulation×
※ Device ram size を小さくする必要がある

やっぱり、Androidの開発はUbuntuでやった方がいいのかなあ。
同じLinuxなのでそんなに大差はないのだが、自分はFedoraの方が何かと好きなので、ぜひFedoraでやりたいんだけどな。

次の記事

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(1件)

タイトル (本文) ブログ名/日時
プラダ アウトレット
Android エミュレータの現状 jumble/ウェブリブログ ...続きを見る
プラダ アウトレット
2013/07/07 20:35

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Android エミュレータの現状 jumble/BIGLOBEウェブリブログ
文字サイズ:       閉じる