Android模拟器命令行不会终止

时间:2018-02-16 18:34:04

标签: android bash shell android-emulator

我有一个像这样的简单shell脚本(在Mac上运行):

/Users/abcdef/Library/Android/sdk/tools/emulator -avd Pixel_API_23
./gradlew assembleDebug assembleAndroidTest
fastlane screengrab

问题是在运行第一行之后,它启动一个模拟器就好了,但是命令停止,它将无法完成,因此下一行无法执行。我试图强行阻止它,但这甚至不起作用。如果我关闭该终端,启动一个新终端,然后再次运行该脚本,第一个命令将退出(模拟器已经运行),其余的将被执行。
我想自动截取一系列设备,所以我想使用单个shell脚本。

1 个答案:

答案 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