我有一个像这样的简单shell脚本(在Mac上运行):
/Users/abcdef/Library/Android/sdk/tools/emulator -avd Pixel_API_23
./gradlew assembleDebug assembleAndroidTest
fastlane screengrab
问题是在运行第一行之后,它启动一个模拟器就好了,但是命令停止,它将无法完成,因此下一行无法执行。我试图强行阻止它,但这甚至不起作用。如果我关闭该终端,启动一个新终端,然后再次运行该脚本,第一个命令将退出(模拟器已经运行),其余的将被执行。
我想自动截取一系列设备,所以我想使用单个shell脚本。
答案 0 :(得分:4)
仿真器命令在仿真器退出时结束。
如果模拟器未退出,则模拟器命令无法完成。
您希望继续而不等待命令完成,您可以通过在后台运行它来执行此操作:
/Users/abcdef/Library/Android/sdk/tools/emulator -avd Pixel_API_23 &
但是,脚本现在立即继续,因此在运行下一行时,模拟器尚未完成加载。您需要等到模拟器准备好接受命令。
这样做的一种简单方法是使用adb
进行轮询:
until adb shell true; do sleep 1; done
总而言之:
/Users/abcdef/Library/Android/sdk/tools/emulator -avd Pixel_API_23 &
until adb shell true; do sleep 1; done
./gradlew assembleDebug assembleAndroidTest
fastlane screengrab