web-dev-qa-db-ja.com

Androidエミュレータが完全に起動したときに検出する

エミュレーターを起動し、システムが完全に起動した後、.apkをインストールするスクリプトを作成したいと思います。

Installコマンドを実行できるように、エミュレータが完全に起動したことをどのように知ることができますか?ここ http://developer.Android.com/guide/developing/tools/adb.htmladb wait-for-device install <app>.apkが正しくありません。

では、どうすればこれを達成できますか?出来ますか?エミュレータが起動していることを確認できるまで、数分間スリープする唯一のオプションはありますか?

31
Catalin Morosan

adbシェルgetpropinit.svc.bootanim

これにより、ブートアニメーションが実行されているかどうかがわかります。これは、エミュレータが起動しているかどうかを確認するためにヘッドレスビルドサーバーで使用するものです。 dac2009のsys.boot_completedが、そのフラグを見つけた理由です。 boot_completedはトリガーが早すぎる傾向があるため、代わりにinit.svc.bootanimを使用します。

37
neuron
while [ "`adb Shell getprop sys.boot_completed | tr -d '\r' `" != "1" ] ; do sleep 1; done

このコードは、システムの起動が完了した場合にsys.boot_completedから情報を取得し、改行を削除して、結果の値を1と比較します。

このコード行の後にadbinstall ...を置くだけです。

20
Sebo

これがすべてのデバイスで機能するかどうかはわかりませんが、私がテストしたデバイスでは機能します。

シェルに入ると、getpropと入力して、電話のプロパティのリストを取得できます。 「sys.boot_completed」と呼ばれるものがあるはずです。

「getpropsys.boot_completed」と入力すると、システムが起動している場合は「1」と応答し、システムが起動していない場合は空の文字列が応答します。

14
dac2009

-delay-adbフラグを指定してエミュレーターを実行してから、adb wait-for-deviceを実行するだけです。 adbは、エミュレーターの起動時に終了します。

0
Torbik

デバイスの起動が完了したことを通知できるブロードキャストレシーバーを設定できます

Android:name="Android.intent.action.BOOT_COMPLETED"
0
DeRagan