2010年6月6日日曜日

Android Emulator に実行ファイルがインストールされない!?

以前の記事で Emulator を使ってアプリケーションの動かし方を説明しました。Emulatorを作成して最初の実行時には何の問題もなく動いていましたが、たまに変な動きをしだすようになりました。

どんな現象かというと、コードを変更して再度 Emulator の起動から実行すると、変更したコード(実行ファイル)が Emulator に反映されていないっぽいのです。

通常 Eclipse 上から Emulator を実行すると
  1. Emulatorが起動する
  2. 実行ファイル(.apkファイル)がインストールされる
という手順で Emulator 上で実行することができます。

通常 Emulator 起動後に Eclipse のコンソールにはアプリケーションのインストールを開始する旨のメッセージ、
Uploading hogehoge.apk onto device 'emulator-XXXX'
Installing hogehoge.apk...
成功!
と出力されます。

私が遭遇した現象は Emulator の起動までは問題ないのですが、起動後にいくら待っても実行ファイルのインストールが始まりません。

これが仕様なのかなんかのかは関係なく、結構悩んだので対処法を書きます。
対処法は非常に簡単で、

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

実行すると Android Device Chooser が立ち上がり、現在起動中のデバイス(ここではEmulator)が表示されるので、選択して [OK] をクリックします。


こうすると実行ファイルのインストールだけ行います。
この「Emulator が起動している状態」という考えが今まで無かったので、毎回長い時間 Emulator の起動を待って、挙句には実行ファイルがインストールされないという状態にイライラしていたのです。

この方法でインストールされなかったことは1度もありませんが、もしこれでもダメな場合は、ターミナル(Windowsはコマンドプロンプト)から直接コマンドを実行する手もあります。 ではコマンドで実行する手順を Emulator の起動から紹介します。
  1. 『emulator @エミュレータ名』を入力します。エミュレータ名はエミュレータ作成した際に自分で付けた名前です。
  2. Emulator の起動を待ちましょう。以下の画面が表示されたら起動完了です。
  3. 現在開いているターミナル(コマンドプロンプト)はそのままにして、新規にターミナル(コマンドプロンプト)を開きます
  4. インストールコマンド『adb install -r hogehoge.apk』を入力します。
インストールコマンドの説明をします。
-r は既に同じアプリケーションがインストールされていた場合は上書きする。という意味です。新規でインストールする際は付けなくても良いですが付けても問題ないです。上書きの際は付けないとインストールできません。
最後に実行ファイル名をフルパスで指定します。Eclipse で開発をしている場合は、ワークスペースの bin ディレクトリに作成されるのでそれを指定しましょう。

インストールコマンドを実行すると以下のメッセージが表示されます。
486 KB/s (24129 bytes in 0.048s)
    pkg: /data/local/tmp/hogehoge.apk
Success
1行目はおそらく転送速度が表示されているので、毎回数値が異なります。
2行目はインストール先です。Androidのアプリケーションはファイルシステムの/data/local/tmpにインストールされます。

Eclipseでインストールする場合もコマンドでインストール場合も Emulator は常に起動したままで構いません。Emulator の起動は遅いので待ってられませんもんね。

0 件のコメント:

コメントを投稿