・
[Mobile] 関係の記事・
[Android] 関係の記事 一昨日から昨日の朝にかけて、予備調査の一環として「Android」の開発環境を構築してみました。
ネックは、「Android」の「emulator.exe」の重さになりそうな感じです。
i-appliなどのエミュレーターと違い、激重です。その理由や、どれぐらいの重さなのかも交えて、ちょっとまとめておこうと思います。
以下、作業履歴です。
セッティングの詳細については、以下のURLにまとまってます。
□Android入門
http://www.javadrive.jp/android/index.html
● 「JDK6」のセッティング
・「JDK6」のDL。
・「JDK6」のインストール。
・ディレクトリにJavaのPATHを通す。
・JAVA_HOMEの設定。
・「JDK6」のドキュメントのダウンロード。
・「JDK6」のドキュメントを、JDK6ディレクトリ内に展開。
● 「Eclipse」のセッティング
・「Eclipse Classic」をDL。
・「Eclipse」を展開。
・起動しなかった。原因は、複数のJDKが入っていること。
・以下のURLを参考にして、ショートカットを作ってパスをJVMにパスを通す。
http://homepage.mac.com/tuyano/...・「Eclipse」日本語化のために、「Pleiades」をDLしてインストール。
● 「Android」のセッティング
・「Android SDK」をDL。
・「Android SDK」を解凍。
・「Eclipse」に、ADTプラグインをインストール。SDK Locationの設定も行う。
● 「Android」「emulator.exe」起動までの道のり
以下、ストップウォッチ片手の操作です。
・「Android」を起動。
・エラーダイアログっぽいのが出る。取り敢えずボタンをクリック。(よく、中身を読んでいなかった)
・いつまで経っても起動しない。
・起動エラーかなと思って、ウィンドウを閉じる。
・次の起動では、先ほど見たエラーダイアログっぽいのが出ない。いつまで経っても起動しない。
・先ほどのダイアログを閉じたのがやばかったのか?(後で判明するが、実は全然関係ない。ただ単に「起動が重かった」だけ)
・「C:\Documents and Settings\USER_NAME\Local Settings\Application Data\Android」を削除すると、初期状態に戻る。(XPの場合。Vistaではパスが違う)
・再度起動すると、javaのコンソールに「Error Loading Preferences」と表示される。
・やっぱり起動しないのか?
・調べて分かったが、「エラーダイアログっぽいの」は、初回起動時の確認メッセージだった。そのまま進めて問題なかった。
・初回起動確認ダイアログの「Proceed」を改めてクリック。延々とCPU100%のままになる。
・1分42秒後に起動“開始”画面が表示される。
・「いつまで待っても起動しない」と思っていたのは、実は重過ぎて画面遷移が進んでいなかっただけ。
・そこからさらに、起動終了まで待ち続ける。
・13分50秒後に、「Sorry! Process system is not responding. [Force close / Wait]」というダイアログになる。
・さらに「Sorry! Application Messaging(in process com.android.mms)is not responding. [Force close / Wait]」というダイアログになる。
・何回か「Wait」を選択している間に、「Android」の基本画面が出た。
● 警告ダイアログについて
・後で調べて分かったが、色々と出ていたダイアログは、動作に時間が掛かり過ぎている時に出るもの。
・参考:
http://d.hatena.ne.jp/hkinami/20080509/p4・基本的には、メモリーとCPUが足りないので、タイムアウトが発生しているらしい。
・WSHのJavaScriptなどで、延々と処理が掛かっている時に、Windowsが出す警告メッセージのようなもの。
● 「Android」「emulator.exe」基本操作
・「Browser」を選択してみた。CPU100%が続く。1分10秒後に、Googleの画面が表示される。
・「http://crocro.com/」を表示してみる。表示終了までに13分3秒かかった。
・Homeに戻り、「Maps」を選び、「Google Map」を表示させてみる。30秒掛かった。
・マウスで画面を移動させてみると、次の表示までに43秒掛かった。
・次にスクロールさせたら、スムーズに動いた。
・ズームは7秒といった感じ。航空写真に切り替えるのは4秒。ここらへんの実装は、他と比べると早い感じ。
・ツール類の中から「API Demos」を選ぶ。
・「Sorry! Activity API Demos(in application API Demos)is note respondeing. [Force dose / Wait]」と出る。
・取り敢えず「Wait」を選ぶと先の画面に進む。
・もっさりしているけど、起動ほど時間は掛からない。
・アニメーション系は、秒間6〜8フレームの感じ。
● 「Android emulator」が遅いことについて調査
・エミュレータが遅いのは、ハードウェア・エミュレーターである「QEMU(Qエミュ)」の上でLinuxを動かしてるからとのこと。
・SDKに付属するエミュレータは、オープンソースの「QEMU」をAndroid向けに適用したもの。
・Androidは、このQEMU上のLinuxカーネルの上で、ネーティブ・コードで動作するライブラリ群を乗せて動かしている。
・さらに、その上に「Dalvik仮想マシン(Dalvik VM)」と呼ぶ独自の実行環境が乗っている。
・その「Dalvik VM」上にアプリケーション・フレームワークがあり、そこでアプリは動いている。
・まとめると、Androidアプリは、「QEMUでエミュレーションしたARMプロセッサ」上の「Linux」上の「Dalvik」上の「VM」上で動いている。ということらしい。
・そりゃあ、重そう。
・あと、起動に時間が掛かるのは、「OSだしな」という気もする。Windows95の頃は、OSの起動に数分掛かっていたので。
・それにしても掛かり過ぎ。
● 「Android」「emulator.exe」2回目以降の起動
・全部起動するのに2分40秒程度だった。
・CPUパワーを凄い消費するので、最前面にウィンドウを持ってきて、プロセスの優先順位を上げておいた方がいい。
・2回目以降、起動が終わると「(No Service)」〜「Screen locked Press Menu to unlock」と出る。この状態で「Menu」を押すと起動が終了する。
・やっぱり警告ダイアログは出まくる。
● 「Android emulator」を高速化できないか実験1 環境
・マシン・スペックは以下の通り。
OS:Windows XP Home Edition
CPU:Celeron 1.70GHz
Memory:0.99GB
● 「Android emulator」を高速化できないか実験2 「KQEMU」編
・QEMUには、QEMUアクセラレーターであるKQEMUが存在する。QEMUベースのAndroidが速くなるかもと期待。
・KQEMUをインストールして、いろいろと実験。
・1分50秒後に起動開始画面が表示される。
・3分16秒後に、起動終了。
・「Sorry! Application Messaging(in process com.android.mms)is not responding. [Force close / Wait]」というダイアログが出る。いつもの「遅い」という警告。
・全然早くなっていない。むしろ遅くなっている。ここらへんは、環境によるのかもしれない。
・「http://crocro.com/」を表示してみた。16分かかった。(どうもバックグラウンドで実行させていたから時間が掛かっていたっぽいが……)
・KQEMUは、ほとんど効果がなかったので、アンインストールする。
● 「Android emulator」を高速化できないか実験3 「プロセス」編
・プロセスを最優先にしてみる。2分20秒で起動。
・一応、20秒は早くなっているが、激的な効果はない。
・さらに、他のウィンドウの操作がほとんどできなくなるので、いろいろと問題あり。
・やめる。
ここ以降は昨日の昼に実験。
● 他のマシンでの「Android emulator」の挙動調査1
・インストールして、「cmd.exe」から「emulator」を叩いて、起動しようとするも失敗。
・パスはしっかりと通っている。「emulator -help」と叩けば、きちんとヘルプが出る。
・直接「emulator.exe」を叩くと起動する。
・原因は謎。
・マシン・スペックは以下の通り。
OS:Windows XP Home Edition
CPU:Celeron 2GHz
Memory:488M
・CPUは1.17倍速いけど、メモリーは半分という構成。
● 他のマシンでの「Android emulator」の挙動調査2
・「Android」起動までの時間は2分20秒。
・「http://crocro.com/」表示は1分5秒。
・警告ダイアログ(遅いので反応がないというもの)はやっぱり出る。
・メニュー表示のアニメーションでの処理落ちがない。秒間12フレーム以上は出ている感じ。遅いという印象は全くない。
・体感的に、動作はスムーズな印象。
● 「Android emulator」まとめ
・マシン比較の実験結果から、メモリーよりもCPU依存の方が大きそうな感じ。
・ネットで情報を見ていると、エミュレーターは非常に重く、実機はかなり速いらしい。
・「エミュレーターの遅さのつもりで画面遷移をさせていると、実機では速過ぎるので、Waitを入れないといけない」という書き込みがあった。
・ボトルネックは、ARMプロセッサをQEMUでエミュレーションしていることにありそう。ここで一番処理が掛かっていそうな印象だった。
というわけで、一通りエミュレーターを触ってみた感想を書くと、「Android開発には、速いマシンが必要そう」となります。
うちのマシンでは非力過ぎるようです。
仕方がないので、昨日の午後、ヨドバシカメラに行って、マシンを物色してきました。
もしマシンを買うとすれば、方向性的には、以下の三つのいずれかになりそうです。
・大画面モニターも込みで、最新のデュアルプロセッサのマシン(CPUは2.6GHzぐらい)を買う。メモリーは4GBぐらい積む。だいたい20万円ぐらい。
・Macを買う。CPUとメモリー的には同上。Windowsも仕込む。15〜25万円ぐらい? 開発環境の構築(OSの習熟含む)に時間が掛かりそう。
・モニターなしのマシンを買う。Acerのマシンが、デュアルプロセッサ3.1GHz、メモリー4GBで8万円だった。OSなどはないただの箱っぽい。小さいので、邪魔にはならなさそう。
そして、もう一つの選択肢は、「遅いマシンをなんとか騙して使う」です。しかし、これは昨晩試したけど厳しそうな感じです。
取り合えず、昨日買ってきた「Google Android入門」を読み終わったので、今は「Google Android完全解説」を読んでいます。
結局マシンを買うなら、「iPhone」も「Android」も、出費的には大差なさそうという状況になりつつあります。