2016-12-14 29 views
9

Aşağıdaki kabuk komutunu kullanarak bir Android emülatörü başlatan:Android öykünücüsünün bir sonraki kabuk komutundan önce çalışmasını bekleyin.

emulator -avd TEST_AVD 

emülatörü sadece iyi başlar, ancak kabuk komut dosyası asla yürütme bitirdiğinde. Emülatör başlatmayı tamamladıktan sonra bile orada asılı kalıyor. Bulduğum bazı başka argümanlarla çalıştım ama hiçbir şey istediğim şeyi yapamaz. Emülatör gitmeye hazır olduğunda kabuk komutunu nasıl bilebilirim veya durdururum?

Emulator'yü başlatmak için bir Jenkinsfile kullanmak üzere Jenkins CI'mizi ayarlıyorum ve sonra bir dizi gradle komutunu çalıştırıyorum. emülatör başlangıç ​​bitene kadar

sh "emulator -avd TEST_AVD" 
sh "./gradlew clean test spoon" 

Ancak, gradle görevleri çalıştırmak istemiyorum, ve bunu yapmak nasıl bilemiyorum: Kısacası, ben bunu yapmak istiyorum terminal.

cevap

11

Eğer emülatör başlattıktan sonra bir şeyler yapmak istiyorsanız

emulator -avd TEST_AVD & 
adb wait-for-device 
# other stuff here 

adb belli bir devlet olmak için bir taşıma üzerinden bir cihaz için bekleyebilir arka planda başlaması gerektiğini

adb wait-for[-<transport>]-<state> 
           - wait for device to be in the given state: 
           device, recovery, sideload, or bootloader 
           Transport is: usb, local or any [default=any] 
+0

Bu çok yardımcı oldu, teşekkürler. Şimdi, durumu başlatana kadar okumak için bir yol bulmalı ve oradan gitmeliyim. Bir şey bulursam geri geleceğim. – AdamMc331

+0

Düzenleme için teşekkürler. bekle-cihazı istediğim gibi olabilir. Test çalışması yapmak için gidiyor. – AdamMc331

+0

İstenilen ve kabul ettiğim için bu istekte bulundu ve kabul edildi. Eğer zamanın varsa, bu soruyu bir adım daha ileri atabilir miyim diye merak ediyorum. Bu, aygıt açıldığında tamamlanır, ancak yeniden başlatıldığında/tamamlanmaz. (Ben hala "android" animasyonunu gösterirken bu tamamlandığını görüyorum). Tamamen önyükleme yapmasını ve ana ekranda nasıl bekleyeceğime dair bir fikrim var mı? – AdamMc331

0

Aygıt (veya emülatör) önyükleme işlemini beklemek için (already answered by Пионерка olduğu gibi) bunu yapabilirsiniz:

adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;' 

Temelde: Cihaz/emülatörü için

  1. bekleyin herkes ilgileniyor olurdu sys.boot_completed mülkiyet
3

gerçek olana kadar

  • Açık 1 saniye aralıklarla & uyku kabuk adb device devlet olmak Android Studio'nun emülatör çalıştırırken yaptığı yanıt şu şekildedir: yanıt this class:

    1. Cihaz çevrimiçi ise, hazırdır. Başka adımlara gitmeye gerek yok. adb shell wm dismiss-keyguard
    2. Waits 1 saniye:
    3. Çekler sistem özelliği adb shell getprop dev.bootcomplete API 23+ cihazlar çalışır için 1
    4. eşit olana kadar ekran kilidini açmak için komut.
  • +0

    Verilen bağlantı için 404 alıyorum. Bunu bulabildiğim en yakın yer şuydu: https://github.com/JetBrains/android/blob/abd1f189043f83ffbb3be33e60fc925deaeae831/android/src/com/android/tools/idea/avdmanager/EmulatorConnectionListener.java Ancak, çekleri anlatabildiğim kadarıyla Neredeyse dahil olduğu gibi değil - sadece 1 ve 2. adımları yapar. – vaughandroid

    +0

    Bağlantı sabit ve buna göre açıklama. –

    İlgili konular