我想创建一个启动模拟器的脚本,在系统完全启动后,我想安装.apk。
如何知道模拟器何时完全启动,以便运行install命令?这里http://developer.android.com/guide/developing/tools/adb.html表示adb wait-for-device install <app>.apk
不正确。
那我怎么能做到这一点?可能吗?我可以选择只睡几分钟,直到我可以确定模拟器已经启动了吗?
答案 0 :(得分:36)
这将告诉您启动动画是否正在运行。这是我们在无头构建服务器上使用的,用于检查模拟器是否已启动。来自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。