在下一个 shell 命令之前等待 Android 模拟器成为 运行?
Wait for Android emulator to be running before next shell command?
我使用以下 shell 命令启动了一个 Android 模拟器:
emulator -avd TEST_AVD
模拟器启动正常,但 shell 脚本从未完成执行。即使在模拟器完成启动后它也会挂在那里。我尝试了一些我能找到的其他论点,但没有什么能完全达到我想要的效果。当模拟器准备好运行时,我如何知道或停止 shell 命令?
我正在设置 Jenkins CI 以使用 Jenkinsfile 启动模拟器,然后 运行 一系列 gradle 命令。简而言之,我想这样做:
sh "emulator -avd TEST_AVD"
sh "./gradlew clean test spoon"
但是,我不想 运行 gradle 任务,直到模拟器完成启动,我不知道如何在终端中执行此操作。
如果你想在启动模拟器后做一些事情,你应该在后台启动它
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]
要等到设备(或模拟器)启动,您可以这样做(就像 already answered by Пионерка 一样):
adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;'
基本上:
- 等待device/emulator进入adb
device
状态
- 打开 shell 并每隔 1 秒休眠一次,直到
sys.boot_completed
属性 变为 true
如果有人对 Android Studio 在 运行 模拟器时的功能感兴趣,答案是 this class:
- 如果设备在线,则表示已准备就绪。无需执行进一步的步骤。
- 检查系统 属性
adb shell getprop dev.bootcomplete
直到它等于 1
- 对于 API 23+ 设备运行命令解锁屏幕:
adb shell wm dismiss-keyguard
- 等待 1 秒。
我使用以下 shell 命令启动了一个 Android 模拟器:
emulator -avd TEST_AVD
模拟器启动正常,但 shell 脚本从未完成执行。即使在模拟器完成启动后它也会挂在那里。我尝试了一些我能找到的其他论点,但没有什么能完全达到我想要的效果。当模拟器准备好运行时,我如何知道或停止 shell 命令?
我正在设置 Jenkins CI 以使用 Jenkinsfile 启动模拟器,然后 运行 一系列 gradle 命令。简而言之,我想这样做:
sh "emulator -avd TEST_AVD"
sh "./gradlew clean test spoon"
但是,我不想 运行 gradle 任务,直到模拟器完成启动,我不知道如何在终端中执行此操作。
如果你想在启动模拟器后做一些事情,你应该在后台启动它
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]
要等到设备(或模拟器)启动,您可以这样做(就像 already answered by Пионерка 一样):
adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;'
基本上:
- 等待device/emulator进入adb
device
状态 - 打开 shell 并每隔 1 秒休眠一次,直到
sys.boot_completed
属性 变为 true
如果有人对 Android Studio 在 运行 模拟器时的功能感兴趣,答案是 this class:
- 如果设备在线,则表示已准备就绪。无需执行进一步的步骤。
- 检查系统 属性
adb shell getprop dev.bootcomplete
直到它等于 1 - 对于 API 23+ 设备运行命令解锁屏幕:
adb shell wm dismiss-keyguard
- 等待 1 秒。