エミュレーターを起動し、システムが完全に起動した後、.apkをインストールするスクリプトを作成したいと思います。
Installコマンドを実行できるように、エミュレータが完全に起動したことをどのように知ることができますか?ここ http://developer.Android.com/guide/developing/tools/adb.htmladb wait-for-device install <app>.apk
が正しくありません。
では、どうすればこれを達成できますか?出来ますか?エミュレータが起動していることを確認できるまで、数分間スリープする唯一のオプションはありますか?
これにより、ブートアニメーションが実行されているかどうかがわかります。これは、エミュレータが起動しているかどうかを確認するためにヘッドレスビルドサーバーで使用するものです。 dac2009のsys.boot_completedが、そのフラグを見つけた理由です。 boot_completedはトリガーが早すぎる傾向があるため、代わりにinit.svc.bootanimを使用します。
while [ "`adb Shell getprop sys.boot_completed | tr -d '\r' `" != "1" ] ; do sleep 1; done
このコードは、システムの起動が完了した場合にsys.boot_completedから情報を取得し、改行を削除して、結果の値を1と比較します。
このコード行の後にadbinstall ...を置くだけです。
これがすべてのデバイスで機能するかどうかはわかりませんが、私がテストしたデバイスでは機能します。
シェルに入ると、getpropと入力して、電話のプロパティのリストを取得できます。 「sys.boot_completed」と呼ばれるものがあるはずです。
「getpropsys.boot_completed」と入力すると、システムが起動している場合は「1」と応答し、システムが起動していない場合は空の文字列が応答します。
-delay-adb
フラグを指定してエミュレーターを実行してから、adb wait-for-device
を実行するだけです。 adb
は、エミュレーターの起動時に終了します。
デバイスの起動が完了したことを通知できるブロードキャストレシーバーを設定できます
Android:name="Android.intent.action.BOOT_COMPLETED"