2016-12-14 2 views
9

मैं निम्नलिखित शेल कमांड का उपयोग कर एक Android एमुलेटर शुरू कर दिया:अगले शेल कमांड से पहले एंड्रॉइड एमुलेटर चलाने के लिए प्रतीक्षा करें?

emulator -avd TEST_AVD 

एमुलेटर ठीक शुरू होता है, लेकिन कभी नहीं खोल स्क्रिप्ट निष्पादित नहीं हो। एम्यूलेटर ने स्टार्टअप पूरा करने के बाद भी यह वहां लटकता है। मैंने कई अन्य तर्कों के साथ प्रयास किया है जो मुझे मिल सकती हैं, लेकिन कुछ भी ऐसा नहीं कर सकता जो मैं चाहता हूं। जब मैं एमुलेटर जाने के लिए तैयार होता हूं, तो मैं शेल कमांड को कैसे जानता हूं या रोक सकता हूं?

मैं अपने जेनकींस सीआई को एमुलेटर शुरू करने के लिए जेनकिन्सफाइल का उपयोग करने के लिए स्थापित कर रहा हूं, और फिर ग्रेडल कमांड की एक श्रृंखला चलाता हूं। संक्षेप में, मैं यह करने के लिए करना चाहते हैं:

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

हालांकि, मैं नहीं चाहता कि Gradle कार्यों को चलाने के लिए जब तक एमुलेटर स्टार्टअप समाप्त हो गया है चाहते हैं, और मैं कैसे करना है कि में समझ नहीं टर्मिनल।

उत्तर

11

क्या आप एमुलेटर प्रारंभ करने के बाद कुछ करना चाहते हैं तो आप इसे पृष्ठभूमि में शुरू कर देना चाहिए

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

adb एक परिवहन पर एक डिवाइस के लिए इंतजार कर सकते हैं एक विशेष स्थिति में होने के लिए

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

इससे बहुत मदद मिली, धन्यवाद। अब मुझे स्थिति शुरू करने तक बस एक रास्ता खोजने की जरूरत है, और वहां से जाओ। अगर मुझे कुछ मिल जाए तो मैं वापस आऊंगा। – AdamMc331

+0

संपादन के लिए धन्यवाद। प्रतीक्षा-के-डिवाइस बिल्कुल वही हो सकता है जो मुझे चाहिए। इसे एक परीक्षण चलाने के लिए जा रहे हैं। – AdamMc331

+0

उपरोक्त और स्वीकार किया गया क्योंकि मैंने जो किया वह मैंने किया। यदि आपके पास समय है, तो सोच रहा हूं कि क्या मैं इस सवाल को एक कदम आगे ले सकता हूं। यह तब पूरा हो जाता है जब डिवाइस खोला जाता है, लेकिन/नहीं/जब यह बूटिंग हो जाता है। (उर्फ मैं इसे पूरा देखता हूं जबकि यह अभी भी "एंड्रॉइड" एनीमेशन दिखा रहा है)। कोई विचार है कि मैं इसे पूरी तरह से बूट करने के लिए इंतजार कर सकता हूं, और होम स्क्रीन पर कैसे जा सकता हूं? – AdamMc331

0

डिवाइस (या एमुलेटर) बूट तक प्रतीक्षा करने के लिए, आप ऐसा कुछ कर सकते हैं (जैसा कि already answered by Пионерка था):

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

असल:

  1. के लिए डिवाइस/एम्युलेटर प्रतीक्षा एडीबी device स्थिति में होना
  2. ओपन 1 सेकंड के अंतराल में & नींद शैल तक sys.boot_completed संपत्ति तो किसी को दिलचस्पी होगी सच
3

हो जाता है एंड्रॉइड स्टूडियो क्या करता है, जब एमुलेटर चलाता है, तो जवाब this class:

  1. यदि डिवाइस ऑनलाइन है, तो यह तैयार है। आगे के कदमों पर जाने की जरूरत नहीं है। adb shell wm dismiss-keyguard
  2. वेट्स 1 सेकंड:
  3. चेकों प्रणाली संपत्ति adb shell getprop dev.bootcomplete जब तक यह 1
  4. के बराबर एपीआई 23+ उपकरणों रन के लिए है स्क्रीन अनलॉक करने के आदेश।
+0

मुझे दिए गए लिंक के लिए 404 मिल रहा है। सबसे नज़दीकी मुझे यह मिल सकता था: https://github.com/JetBrains/android/blob/abd1f189043f83ffbb3be33e60fc925deaeae831/android/src/com/android/tools/idea/avdmanager/EmulatorConnectionListener.java हालांकि, मैं चेक से क्या कह सकता हूं इसका उपयोग लगभग शामिल नहीं है - यह केवल चरण 1 और 2. करता है – vaughandroid

+0

लिंक निश्चित है और तदनुसार विवरण है। –

संबंधित मुद्दे