检测Android模拟器何时完全启动

时间:2010-09-03 08:15:57

标签: android scripting emulation

我想创建一个启动模拟器的脚本,在系统完全启动后,我想安装.apk。

如何知道模拟器何时完全启动,以便运行install命令?这里http://developer.android.com/guide/developing/tools/adb.html表示adb wait-for-device install <app>.apk不正确。

那我怎么能做到这一点?可能吗?我可以选择只睡几分钟,直到我可以确定模拟器已经启动了吗?

7 个答案:

答案 0 :(得分:36)

adb shell getprop init.svc.bootanim

这将告诉您启动动画是否正在运行。这是我们在无头构建服务器上使用的,用于检查模拟器是否已启动。来自dac2009的sys.boot_completed是让我找到那个标志的原因。我们使用init.svc.bootanim,因为boot_completed有过早触发的倾向。

答案 1 :(得分:18)

while [ "`adb shell getprop sys.boot_completed | tr -d '\r' `" != "1" ] ; do sleep 1; done

如果系统启动完成,此代码从sys.boot_completed获取信息,删除换行符并将结果值与1进行比较。如果其不相等1 /未完全启动/它将只休眠1秒并再次尝试。 / p>

在这行代码之后安装你的adb install。

答案 2 :(得分:14)

我不确定这是否适用于所有设备,但它适用于我测试过的设备。

如果你进入shell,可以输入getprop,并获取手机属性列表。 应该有一个名为“sys.boot_completed”的。

如果键入“getprop sys.boot_completed”,则系统启动时将响应“1”,如果系统未启动则返回空字符串。

答案 3 :(得分:0)

您可以设置可以通知设备启动完成的广播接收器

android:name="android.intent.action.BOOT_COMPLETED"

答案 4 :(得分:0)

只需使用library(dplyr) df %>% group_by(Model) %>% slice(if(any(Discount > ActualDiscount)) which.max(findInterval(Discount, first(ActualDiscount))) else which.max(Discount - ActualDiscount)) # Model Level Discount ActualDiscount # <fct> <int> <dbl> <dbl> #1 BD56 1 21 20 #2 HT67 2 25 24 #3 KJ90 3 33 32 #4 RTD9 3 33.7 35.5 #5 YT61 5 33 32.5 标志运行仿真器,然后运行-delay-adb。模拟器启动后,adb wait-for-device将退出。

答案 5 :(得分:0)

adb shell getprop service.bootanim.exit

尝试init.svc.bootanim = "stopped"dev.bootcomplete = 1都没有任何乐趣。反馈还为时过早。尤其是对于速度较慢的模拟器和su 0 setprop ctl.restart zygote的使用。

adb shell getprop service.bootanim.exit = 1已经足够晚了,可以继续使用应用程序而不会发生引导冲突。

答案 6 :(得分:-1)

如果使用“-logcat VERBOSE”启动它,则可以解析模拟器的stdout输出,并等待指示模拟器已启动的消息。

我现在没有在输出中看到任何好消息,但你可能会编写一个正在侦听“android.intend.action.BOOT_COMPLETED”的应用程序,并将一些内容写入日志。

有关详细信息,请参阅http://developer.android.com/guide/developing/tools/emulator.html