我使用以下shell命令启动了Android模拟器:
emulator -avd TEST_AVD
模拟器启动很好,但shell脚本永远不会完成执行。即使在模拟器完成启动后,它也会挂起。我已经尝试过其他一些我能找到的论点,但没有什么可以做我想要的。当模拟器准备就绪时,我如何知道或停止shell命令?
我正在设置Jenkins CI以使用Jenkinsfile启动模拟器,然后运行一系列gradle命令。简而言之,我想这样做:
sh "emulator -avd TEST_AVD"
sh "./gradlew clean test spoon"
但是,我不想在模拟器完成启动之前运行gradle任务,我无法弄清楚如何在终端中执行此操作。
答案 0 :(得分:16)
如果您想在启动模拟器后执行某些操作,则应在后台启动它
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]
答案 1 :(得分:6)
如果有人对Android Studio的功能感兴趣,那么在运行模拟器时,答案是this class:
adb shell getprop dev.bootcomplete
,直到它等于1 adb shell wm dismiss-keyguard
答案 2 :(得分:5)
要等到设备(或模拟器)启动,你可以做这样的事情(就像already answered by Пионерка一样):
adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;'
基本上:
device
状态sys.boot_completed
属性变为真实