2

I try to develop script to launch armeabi-v7a emulator and execute gradle connectedAndroidTest task to run android device tests targeted to my app.

I wrote script which successfully check required emulator target and download and install it if it is missed and then launch emulator. All these points work well. But After I launch emulator I have to wait until it will be completely booted.

I guess my problem is that I cannot rightful detect that emulator was completely finish his boot operation and is ready to install apps as well.

According to suggestions in web we can use two following system properties to detect complete boot, it is

init.svc.bootanim - state of boot animation sys.boot_completed - system state of boot operation

We can revise them by calling

adb -e shell getprop init.svc.bootanim and adb -e shell getprop init.svc.bootanim accordingly

I figured out that sys.boot_completed more reliable than init.svc.bootanim, but anyway I wait both of them. But it does not help, because if after waiting device boot I start connectedAndroidTest task after running about 4 minutes it fails with next exception

Unable to install /Users/busylee/temp/TestRun/app/build/outputs/apk/debug/app-debug.apk
com.android.ddmlib.InstallException
        at com.android.ddmlib.Device.installRemotePackage(Device.java:1011)
        at com.android.ddmlib.Device.installPackage(Device.java:911)
...
Caused by: com.android.ddmlib.ShellCommandUnresponsiveException
        at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:557)
        at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:383)
...

But if I wait for a while it completes. Which I guess means that I do not wait something before install test app.

Do you have any ideas what I can rely on while waiting an emulator start?

player0
  • 124,011
  • 12
  • 67
  • 124
busylee
  • 2,540
  • 1
  • 16
  • 35

0 Answers0