Hello! I’ve run into an issue running the Android emulator (using system image system-images;android-36;google_apis;x86_64) on machine executors (with tag android:2026.05.1) and the latest Android orb. Running android/start_emulator_and_run_tests would result in hanging at the “Waiting for boot antimation…” step.
This doesn’t appear to happen on emulators running API 35.
I dug in a little bit and was able to put together a workaround for my team. What was happening here is that circle-android wait-for-boot was polling with adb for a system property (init.svc.bootanim) to return the completed string. Two things combined to make this hang forever:
-
By default, Circle configures emulators to start without a boot animation (for speed, which is a good thing).
-
It appears that as of API 36, if the boot animation isn’t run, the system property itself isn’t populated at all. I couldn’t find documentation of this change (so who knows if it’s intentional), but you can see the difference on Circle in an API 35 vs API 36 emulator by running
adb shell getpropsto see a list of all system properties.init.svc.bootanimis present on 35 even if it was booted without animation, and isn’t on 36.
My workaround here was just removing the line that waits for the boot animation in circle-android. The next line in that script polls for the actual system boot completion, which does appear reliably indicate that that the system has… booted.
sudo sed -i "s/wait_for_sys_prop('Boot animation complete', 'init.svc.bootanim', 'stopped')//" /usr/local/bin/circle-android
Doing this is, of course, fragile, so wanted to pass this on so y’all can take a look upstream!