2011/11/23

Android エミュレータで PhoneGap が動かせない

PhoneGap でアプリを作ってみたくて、手順通りにやってみても全然うまくいかなかったので、メモ。

事象

  • EclipseからAndroidエミュレータを起動してもPhoneGapのアプリが起動されない。
  • アプリ一覧を探してみても、どこにもアプリがインストールされてない。
  • そもそも普通のAndroidアプリのサンプルで試してもインストールされない。

結論

  • adb server がおかしい?ため、再起動すればいい。

経緯などどうでもいい方は 結論(手順)

前提・経緯

  • 新規に環境を構築した
    • これまでEclipseでAndroidアプリ開発は行っていない
    • 環境を構築してみたことはあったが、今年は何度もOSを再インストールしているので環境が残ってない
    • しかも今回なかなかうまくいかないので(他の理由もあったが)、またOSから入れなおした
    • ほんとはiPhoneアプリを作りたいが、Macを人質に取られているのでしょうがない
  • 環境構築は間違ってないはずなのにうまくいかない

【2011/11/24追記】環境

  • Windows7 x64 SP1
  • JDK 1.6.0_29 (x86版)
  • Eclipse 3.7.1 (Pleiades版)
  • Android SDK r15
  • ADT Plugin for Eclipse 15.0.1
  • PhoneGap Eclipse PlugIn for Android 1.2.5 (PhoneGap 1.1.0)

試行錯誤

まず、PhoneGapの インストール方法(Android/Windows編) を元に環境を構築。Eclipse は Pleiades の 3.7 を使用した。

次に 「PhoneGapのjarをコピーして、xml編集して…」 という作業が嫌になってきたので PhoneGap Eclipse PlugIn for Android を入れた。プロジェクト作成手順やら実行手順もそのページを参照。

ここまでで「はい、サンプルアプリが起動しましたね」と色んなページに書いてあるが、結果は素のAndroidエミュレータが起動するだけ。アプリなんか影も形もない。




色々と解決策を探すうち、以前にも目にしたことのある「エミュレータを毎回起動するのが重い」⇒「エミュレータ起動しっぱなしにして、アプリだけ再実行すればいいじゃん」というやりとりを目にする。

特に解決策と関係ないと思いつつ再実行してみると、エミュレータがもう一つ立ち上がる。




いやいやいや・・・


と思ったがそれ以上深く突っ込まず、「アプリがインストールできない」事象を調べていると、Android Emulator に実行ファイルがインストールされない!? という記事を見つけた。そこには似たような事象と解決方法が書いてあり、解決方法は

⇒ Emulator が起動している状態で Eclipse からもう一回実行するだけ。

オワタ\(^o^)/


エミュレータを二重起動させない起動時オプションなんかも探してみたけど見つからず。しかし、起動時のログを見ていて、なんかおかしいことに気づく

Automatic Target Mode: Preferred AVD 'Android4.0' is not available. Launching new emulator.
Launching a new emulator with Virtual Device 'Android4.0'

自動ターゲットモード?起動中のエミュレータを見つけられずに、新しいのを立ち上げます? …きっとコレダッ!どっかで設定を見たことある!ということで「実行」⇒「実行構成」から「Androidアプリケーション」の対象プロジェクトを選び、「ターゲット」タブを選択。

ここを「自動」から「手操作」に変更して適用。実行してみると…



やっぱり起動中のエミュレータ情報がない! 原因は分かったが、この事象が起こる根本原因が分からない。根本はさておき、現状打破の情報を探していると、Android Xperia/X10 adb devices で認識されない 表示されない という記事を見つけた。そうか、コマンドラインがあった。

この記事を参考にしながら、エミュレータが起動している状態で以下のコマンドを入力する

C:\Users>adb devices
List of devices attached


C:\Users>

うん、やはり見えていない。ということで、さらに以下を試す

C:\Users>adb kill-server

C:\Users>adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

C:\Users>adb devices
List of devices attached
emulator-5554   device


C:\Users>

出てきた! ここでプロジェクトを実行すると



出てきた! 既存のエミュレータを選択してOKすると




やっと辿り着いた…

休日に合間を見ながら調べていて、ここに来るまで3週間かかった( ;´Д`) ひどすぎる

しかしまだ根本原因は分かっていないので、継続調査する。はず。

結論(手順)

  1. Eclipseでプロジェクト実行(エミュレータ起動)
  2. コマンドプロンプトからadb server再起動し、デバイスが見えることを確認
  3. > adb kill-server
    > adb start-server
    > adb devices
    
  4. Eclipseで再度プロジェクト実行(起動中エミュレータにアプリをインストール)
  5. エミュレータを落とした場合、また1.から同じ手順

一度エミュレータを落とすと、次からエラーが出てエミュレータを起動できない場合がある。そのときは、AVDマネージャで既存のデバイスを消して(消さなくてもいいかも?)、別のデバイスを新規に作ればOK

0 件のコメント:

コメントを投稿