AVD Manager - Android - Fail Start Emulator on M1

Hi!

I’m trying to run the E2E Tests with Detox on Android of a MobileApp built with React Native, but the workflow fails when is trying to run the emulator

This Step is not yet supported on Apple Silicon (M1) machines. If you cannot find a solution to this error, try running this Workflow on an Intel-based machine type.

Thanks in advance,

+------------------------------------------------------------------------------+

| (8) AVD Manager                                                              |
+------------------------------------------------------------------------------+
| id: avd-manager                                                              |
| version: 1.2.1                                                               |
| collection: https://github.com/bitrise-io/bitrise-steplib.git                |
| toolkit: go                                                                  |
| time: 2024-09-18T17:06:37Z                                                   |
+------------------------------------------------------------------------------+
|                                                                              |
Config:
- ANDROID_HOME: /usr/local/share/android-sdk
- ANDROID_SDK_ROOT: /usr/local/share/android-sdk
- api_level: 34
- tag: google_apis
- profile: pixel_3a
- create_command_flags: --sdcard 512M
- start_command_flags: -camera-back none -camera-front none -accel off
- emulator_id: emulator
- abi: arm64-v8a
- emulator_channel: no update
- headless_mode: true
Initialize Android SDK
Updating system-image packages
$ /usr/local/share/android-sdk/cmdline-tools/cmdline-tools/bin/sdkmanager "--verbose" "--channel=0" "system-images;android-34;google_apis;arm64-v8a"
Creating device
$ /usr/local/share/android-sdk/cmdline-tools/cmdline-tools/bin/avdmanager "--verbose" "create" "avd" "--force" "--name" "emulator" "--device" "pixel_3a" "--package" "system-images;android-34;google_apis;arm64-v8a" "--tag" "google_apis" "--abi" "arm64-v8a" "--sdcard" "512M"
Starting device
$ /usr/local/share/android-sdk/emulator/emulator "@emulator" "-verbose" "-show-kernel" "-no-audio" "-netdelay" "none" "-no-snapshot" "-wipe-data" "-gpu" "auto" "-no-window" "-no-boot-anim" "-camera-back" "none" "-camera-front" "none" "-accel" "off"
Emulator process exited early
A possible cause can be the emulator process having received a KILL signal.
Emulator log: {INFO    | Storing crashdata in: /tmp/android-vagrant/emu-crash-34.1.18.db, detection is enabled for process: 9097
INFO    | Android emulator version 34.1.18.0 (build_id 11481568) (CL:N/A)
DEBUG   | Current emulator version 34.1.18 is the same as the required version 34.1.18.
INFO    | Found AVD name 'emulator'
INFO    | Found AVD target architecture: arm64
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/system.img.qcow2 failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/vendor.img.qcow2 failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/userdata-qemu.img failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/userdata-qemu.img.qcow2 failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/userdata.img done
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/userdata.img.qcow2 failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/cache.img failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/cache.img.qcow2 failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/version_num.cache failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/bootcompleted.ini failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/sdcard.img.qcow2 failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/encryptionkey.img failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/encryptionkey.img.qcow2 failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/hardware-qemu.ini failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/emulator-user.ini failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/quickbootChoice.ini failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/emu-launch-params.txt failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/initrd failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/AVD.conf failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/multiinstance.lock failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/read-snapshot.txt failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/data failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/modem_simulator failed
INFO    | Deleting /Users/vagrant/.android/avd/../avd/emulator.avd/default.dtb failed
INFO    | Failed to remove snapshot directory '/Users/vagrant/.android/avd/../avd/emulator.avd/snapshots'
INFO    | Failed to remove ADB command directory '/Users/vagrant/.android/avd/../avd/emulator.avd/tmpAdbCmds'
INFO    | argv[0]: '/usr/local/share/android-sdk/emulator/emulator'; program directory: '/usr/local/share/android-sdk/emulator'
INFO    | Found systemPath /usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a/
INFO    | Storing crashdata in: /tmp/android-vagrant/emu-crash-34.1.18.db, detection is enabled for process: 9097
INFO    | Duplicate loglines will be removed, if you wish to see each individual line launch with the -log-nofilter flag.
DEBUG   | autoconfig: -skin 1080x2220
DEBUG   | autoconfig: -skindir (null)
DEBUG   | autoconfig: -kernel /usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a//kernel-ranchu
DEBUG   | Target arch = 'arm64'
DEBUG   | Auto-detect: Kernel image requires new device naming scheme.
DEBUG   | Auto-detect: Kernel does not support YAFFS2 partitions.
DEBUG   | autoconfig: -ramdisk /usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a//ramdisk.img
DEBUG   | Using initial system image: /usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a//system.img
DEBUG   | Using initial vendor image: /usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a//vendor.img
DEBUG   | autoconfig: -initdata /usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a//userdata.img
DEBUG   | autoconfig: -cache /Users/vagrant/.android/avd/../avd/emulator.avd/cache.img
DEBUG   | INFO: ignore sdcard for arm at api level >= 30
INFO    | Increasing RAM size to 2048MB
DEBUG   | VM heap size 0MB is below hardware specified minimum of 512MB,setting it to that value
DEBUG   | System image is read only
DEBUG   | Found 3 DNS servers:
DEBUG   | 	8.8.8.8
DEBUG   | 	1.1.1.1
DEBUG   | 	4.2.2.2
DEBUG   | Starting hostapd main loop.
DEBUG   | found magic skin width=1080 height=2220 bpp=16
DEBUG   | Creating ext4 userdata partition: /Users/vagrant/.android/avd/../avd/emulator.avd/data
Creating filesystem with parameters:
    Size: 6442450944
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 8192
    Inode size: 256
    Journal blocks: 24576
    Label: 
    Blocks: 1572864
    Block groups: 48
    Reserved block group size: 383
Created filesystem with 37/393216 inodes and 52365/1572864 blocks
DEBUG   | convert img from ext4 /Users/vagrant/.android/avd/../avd/emulator.avd/userdata-qemu.img to qcow2 image /Users/vagrant/.android/avd/../avd/emulator.avd/userdata-qemu.img.tmp.qcow2  succeeded, using 35 mini seconds
DEBUG   | Creating empty ext4 cache partition: /Users/vagrant/.android/avd/../avd/emulator.avd/cache.img
Creating filesystem with parameters:
    Size: 69206016
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 4224
    Inode size: 256
    Journal blocks: 1024
    Label: 
    Blocks: 16896
    Block groups: 1
    Reserved block group size: 7
Created filesystem with 11/4224 inodes and 1302/16896 blocks
DEBUG   | CPU Acceleration: working, but disabled by user
DEBUG   | CPU Acceleration status: Hypervisor.Framework OS X Version 14.1
DEBUG   | handleCpuAcceleration: feature check for hvf
WARNING | arm64-v8a emulation may not work without hardware acceleration!
DEBUG   | Bluetooth requested by guest
WARNING | /etc/localtime does not point to zoneinfo-compatible timezone name
DEBUG   | started modem simulator host server at port: 50110
DEBUG   | Path:/usr/local/share/android-sdk/platform-tools/adb protocol version: 41
DEBUG   | Path:/usr/local/share/android-sdk/platform-tools/adb protocol version: 41 (2x)
DEBUG   | Found: 3 adb executables
DEBUG   | Adb: /usr/local/share/android-sdk/platform-tools/adb
DEBUG   | Adb: /usr/local/share/android-sdk/platform-tools/adb (2x)
DEBUG   | Path:/usr/local/share/android-sdk/platform-tools/adb protocol version: 41
library_mode swangle_indirect gpu mode swangle_indirect
DEBUG   | Path:/usr/local/share/android-sdk/platform-tools/adb protocol version: 41 (2x)
DEBUG   | GPU emulation enabled using 'swangle_indirect' mode
DEBUG   | Initializing hardware OpenGLES emulation support
Initializing hardware OpenGLES emulation supportandroid_startOpenglesRenderer: gpu infoI0918 17:07:34.040492 9ca9ec0 HealthMonitor.cpp:279] HealthMonitor disabled.
DEBUG   | create display 0
DEBUG   | setDisplayPose 0 x 0 y 0 w 1080 h 2220 dpi 0
I0918 17:07:34.118788 9ca9ec0 FrameBuffer.cpp:486] Graphics Adapter Vendor Google (Google Inc. (Google))
I0918 17:07:34.118802 9ca9ec0 FrameBuffer.cpp:487] Graphics Adapter Android Emulator OpenGL ES Translator (ANGLE (Google, Vulkan 1.2.0 (SwiftShader Device (LLVM 10.0.0) (0x0000C0DE)), SwiftShader driver-5.0.0))
I0918 17:07:34.118804 9ca9ec0 FrameBuffer.cpp:488] Graphics API Version OpenGL ES 3.0 (OpenGL ES 3.1.0 (ANGLE 2.1.1 git hash: fbf66f49c7cc))
I0918 17:07:34.118806 9ca9ec0 FrameBuffer.cpp:489] Graphics API Extensions GL_OES_EGL_sync GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_depth24 GL_OES_depth32 GL_OES_element_index_uint GL_OES_texture_float GL_OES_texture_float_linear GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth_texture GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_packed_depth_stencil GL_OES_vertex_half_float GL_OES_standard_derivatives GL_OES_texture_npot GL_OES_rgb8_rgba8 GL_OVR_multiview2 GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_texture_format_BGRA8888 GL_APPLE_texture_format_BGRA8888 GL_EXT_draw_buffers_indexed 
I0918 17:07:34.118808 9ca9ec0 FrameBuffer.cpp:490] Graphics Device Extensions N/A
INFO    | Setting vsync to 60 hz
DEBUG   | INFO: ignore sdcard for arm at api level >= 30
INFO    | Sending adb public key [QAAAAAU1oV8zsOOf3QCIEoo1lXbn325AE1KO/xQYVfHGHjgx1jCxfjMT2PIyjs/c5DQ14xDUdhoFEttJxta0D1h9xv3gI31wZls8rFwZ8BGJM0vdkc4dZdl17N2GogYpM15m59SAW8RzPR1TBIa+grCAyw/N2EBll1B8SkAOguor/MuQIuV8MgfNPMF72n0YUTFXwWTP/N2Soh+CJepxh34fl/hPRdOd2uOym3ZLrQiH7G8eAwFcsNulVyXwTWMr8N3IN7eD2ZKf97WpodKoOKfGHnxxTnApvJgEUP1E5DLqSEnUb2gdZkqPjwu0LwVlJyhW6B4yH5bMUASovyAcIHxn7Wsd56DCPKXLuLm5PbNXJXW6EOABux0lWdA+k/azWIyyYoevCNSXs6vyQ2pwvNY7QE1aLo5aCdM/0I+lCxIhZfD3CDQpYXKKeq1PRyaeHIb2vDJtH0S+Bx/7prQ+y8zNgHZw/O3g+CscqudxyVqyhIgsrRmx7e77sG7XBajcyh0IFwgZJqS+1ahh2osdZO2ofLu6Uqu8ZKs2tgSLXkSR1c1K59w6bmh2WeYMsRguYJKLnr2ovfjYVsNrgXHqJfj/Z6ucyWqcH7WtK8oifN+05OHU9A/7rrjRNLjjRiqq4QF8MFDgmKUaEkOOZM7B48dmp7sWKpPYPi+fwbSMJhuL5bTYtLPxOAEAAQA= vagrant@unknown]
DEBUG   | Found 3 DNS servers:
DEBUG   | 	8.8.8.8
DEBUG   | 	1.1.1.1
DEBUG   | 	4.2.2.2
INFO    | Content of hardware configuration file:
INFO    | 	hw.cpu.arch = arm64
INFO    | 	hw.cpu.ncore = 3
INFO    | 	hw.ramSize = 2048
INFO    | 	hw.screen = multi-touch
INFO    | 	hw.mainKeys = false
INFO    | 	hw.trackBall = false
INFO    | 	hw.keyboard = false
INFO    | 	hw.keyboard.lid = true
INFO    | 	hw.keyboard.charmap = qwerty2
INFO    | 	hw.dPad = false
INFO    | 	hw.rotaryInput = false
INFO    | 	hw.gsmModem = true
INFO    | 	hw.gps = true
INFO    | 	hw.battery = true
INFO    | 	hw.accelerometer = true
INFO    | 	hw.accelerometer_uncalibrated = true
INFO    | 	hw.gyroscope = true
INFO    | 	hw.audioInput = true
INFO    | 	hw.audioOutput = true
INFO    | 	hw.sdCard = true
INFO    | 	disk.cachePartition = true
INFO    | 	disk.cachePartition.path = /Users/vagrant/.android/avd/../avd/emulator.avd/cache.img
INFO    | 	disk.cachePartition.size = 66m
INFO    | 	test.quitAfterBootTimeOut = -1
INFO    | 	test.delayAdbTillBootComplete = 0
INFO    | 	test.monitorAdb = 0
INFO    | 	hw.lcd.width = 1080
INFO    | 	hw.lcd.height = 2220
INFO    | 	hw.lcd.depth = 16
INFO    | 	hw.lcd.circular = false
INFO    | 	hw.lcd.density = 440
INFO    | 	hw.lcd.backlight = true
INFO    | 	hw.lcd.vsync = 60
INFO    | 	hw.gltransport = pipe
INFO    | 	hw.gltransport.asg.writeBufferSize = 1048576
INFO    | 	hw.gltransport.asg.writeStepSize = 4096
INFO    | 	hw.gltransport.asg.dataRingSize = 32768
INFO    | 	hw.gltransport.drawFlushInterval = 800
INFO    | 	hw.displayRegion.0.1.xOffset = -1
INFO    | 	hw.displayRegion.0.1.yOffset = -1
INFO    | 	hw.displayRegion.0.1.width = 0
INFO    | 	hw.displayRegion.0.1.height = 0
INFO    | 	hw.displayRegion.0.2.xOffset = -1
INFO    | 	hw.displayRegion.0.2.yOffset = -1
INFO    | 	hw.displayRegion.0.2.width = 0
INFO    | 	hw.displayRegion.0.2.height = 0
INFO    | 	hw.displayRegion.0.3.xOffset = -1
INFO    | 	hw.displayRegion.0.3.yOffset = -1
INFO    | 	hw.displayRegion.0.3.width = 0
INFO    | 	hw.displayRegion.0.3.height = 0
INFO    | 	hw.display1.width = 0
INFO    | 	hw.display1.height = 0
INFO    | 	hw.display1.density = 0
INFO    | 	hw.display1.xOffset = -1
INFO    | 	hw.display1.yOffset = -1
INFO    | 	hw.display1.flag = 0
INFO    | 	hw.display2.width = 0
INFO    | 	hw.display2.height = 0
INFO    | 	hw.display2.density = 0
INFO    | 	hw.display2.xOffset = -1
INFO    | 	hw.display2.yOffset = -1
INFO    | 	hw.display2.flag = 0
INFO    | 	hw.display3.width = 0
INFO    | 	hw.display3.height = 0
INFO    | 	hw.display3.density = 0
INFO    | 	hw.display3.xOffset = -1
INFO    | 	hw.display3.yOffset = -1
INFO    | 	hw.display3.flag = 0
INFO    | 	hw.multi_display_window = false
INFO    | 	hw.hotplug_multi_display = false
INFO    | 	hw.gpu.enabled = true
INFO    | 	hw.gpu.mode = swangle_indirect
INFO    | 	hw.initialOrientation = portrait
INFO    | 	hw.camera.back = none
INFO    | 	hw.camera.front = none
INFO    | 	vm.heapSize = 512
INFO    | 	hw.sensors.light = true
INFO    | 	hw.sensors.pressure = true
INFO    | 	hw.sensors.humidity = true
INFO    | 	hw.sensors.proximity = true
INFO    | 	hw.sensors.magnetic_field = true
INFO    | 	hw.sensors.magnetic_field_uncalibrated = true
INFO    | 	hw.sensors.gyroscope_uncalibrated = true
INFO    | 	hw.sensors.orientation = true
INFO    | 	hw.sensors.temperature = true
INFO    | 	hw.sensors.rgbclight = false
INFO    | 	hw.sensor.hinge = false
INFO    | 	hw.sensor.hinge.count = 0
INFO    | 	hw.sensor.hinge.type = 0
INFO    | 	hw.sensor.hinge.sub_type = 0
INFO    | 	hw.sensor.hinge.resizable.config = 1
INFO    | 	hw.sensor.hinge.fold_to_displayRegion.0.1_at_posture = 1
INFO    | 	hw.sensor.roll = false
INFO    | 	hw.sensor.roll.count = 0
INFO    | 	hw.sensor.roll.resize_to_displayRegion.0.1_at_posture = 6
INFO    | 	hw.sensor.roll.resize_to_displayRegion.0.2_at_posture = 6
INFO    | 	hw.sensor.roll.resize_to_displayRegion.0.3_at_posture = 6
INFO    | 	hw.sensors.heart_rate = false
INFO    | 	hw.sensors.wrist_tilt = false
INFO    | 	hw.useext4 = true
INFO    | 	hw.arc = false
INFO    | 	hw.arc.autologin = false
INFO    | 	hw.device.name = pixel_3a
INFO    | 	kernel.path = /usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a//kernel-ranchu
INFO    | 	kernel.newDeviceNaming = yes
INFO    | 	kernel.supportsYaffs2 = no
INFO    | 	disk.ramdisk.path = /usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a//ramdisk.img
INFO    | 	disk.systemPartition.initPath = /usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a//system.img
INFO    | 	disk.systemPartition.size = 4107m
INFO    | 	disk.vendorPartition.initPath = /usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a//vendor.img
INFO    | 	disk.vendorPartition.size = 800m
INFO    | 	disk.dataPartition.path = /Users/vagrant/.android/avd/../avd/emulator.avd/userdata-qemu.img
INFO    | 	disk.dataPartition.initPath = /usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a//userdata.img
INFO    | 	disk.dataPartition.size = 6g
INFO    | 	disk.encryptionKeyPartition.path = /Users/vagrant/.android/avd/../avd/emulator.avd/encryptionkey.img
INFO    | 	PlayStore.enabled = false
INFO    | 	avd.name = emulator
INFO    | 	avd.id = emulator
INFO    | 	fastboot.forceColdBoot = false
INFO    | 	userdata.useQcow2 = true
INFO    | 	firstboot.bootFromDownloadableSnapshot = true
INFO    | 	firstboot.bootFromLocalSnapshot = true
INFO    | 	firstboot.saveToLocalSnapshot = true
INFO    | 	android.sdk.root = /usr/local/share/android-sdk
INFO    | 	android.avd.home = /Users/vagrant/.android/avd
INFO    | .
INFO    | QEMU options list:
INFO    | 	 argv[00] = "/usr/local/share/android-sdk/emulator/qemu/darwin-aarch64/qemu-system-aarch64-headless"
INFO    | 	 argv[01] = "-dns-server"
INFO    | 	 argv[02] = "8.8.8.8,1.1.1.1,4.2.2.2"
INFO    | 	 argv[03] = "-no-audio"
INFO    | 	 argv[04] = "-serial"
INFO    | 	 argv[05] = "stdio"
INFO    | 	 argv[06] = "-cpu"
INFO    | 	 argv[07] = "cortex-a53"
INFO    | 	 argv[08] = "-machine"
INFO    | 	 argv[09] = "type=virt"
INFO    | 	 argv[10] = "-enable-hvf"
INFO    | 	 argv[11] = "-smp"
INFO    | 	 argv[12] = "cores=3"
INFO    | 	 argv[13] = "-m"
INFO    | 	 argv[14] = "2048"
INFO    | 	 argv[15] = "-lcd-density"
INFO    | 	 argv[16] = "440"
INFO    | 	 argv[17] = "-nodefaults"
INFO    | 	 argv[18] = "-kernel"
INFO    | 	 argv[19] = "/usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a//kernel-ranchu"
INFO    | 	 argv[20] = "-initrd"
INFO    | 	 argv[21] = "/Users/vagrant/.android/avd/../avd/emulator.avd/initrd"
INFO    | 	 argv[22] = "-drive"
INFO    | 	 argv[23] = "index=0,id=vendor,if=none,file=/usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a//vendor.img,read-only"
INFO    | 	 argv[24] = "-device"
INFO    | 	 argv[25] = "virtio-blk-device,drive=vendor"
INFO    | 	 argv[26] = "-drive"
INFO    | 	 argv[27] = "index=1,id=encrypt,if=none,file=/Users/vagrant/.android/avd/../avd/emulator.avd/encryptionkey.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576"
INFO    | 	 argv[28] = "-device"
INFO    | 	 argv[29] = "virtio-blk-device,drive=encrypt"
INFO    | 	 argv[30] = "-drive"
INFO    | 	 argv[31] = "index=2,id=userdata,if=none,file=/Users/vagrant/.android/avd/../avd/emulator.avd/userdata-qemu.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576"
INFO    | 	 argv[32] = "-device"
INFO    | 	 argv[33] = "virtio-blk-device,drive=userdata"
INFO    | 	 argv[34] = "-drive"
INFO    | 	 argv[35] = "index=3,id=cache,if=none,file=/Users/vagrant/.android/avd/../avd/emulator.avd/cache.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576"
INFO    | 	 argv[36] = "-device"
INFO    | 	 argv[37] = "virtio-blk-device,drive=cache"
INFO    | 	 argv[38] = "-drive"
INFO    | 	 argv[39] = "index=4,id=system,if=none,file=/usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a//system.img,read-only"
INFO    | 	 argv[40] = "-device"
INFO    | 	 argv[41] = "virtio-blk-device,drive=system"
INFO    | 	 argv[42] = "-netdev"
INFO    | 	 argv[43] = "user,id=mynet"
INFO    | 	 argv[44] = "-device"
INFO    | 	 argv[45] = "virtio-net-device,netdev=mynet"
INFO    | 	 argv[46] = "-chardev"
INFO    | 	 argv[47] = "null,id=forhvc0"
INFO    | 	 argv[48] = "-chardev"
INFO    | 	 argv[49] = "null,id=forhvc1"
INFO    | 	 argv[50] = "-device"
INFO    | 	 argv[51] = "virtio-serial-pci,ioeventfd=off"
INFO    | 	 argv[52] = "-device"
INFO    | 	 argv[53] = "virtconsole,chardev=forhvc0"
INFO    | 	 argv[54] = "-device"
INFO    | 	 argv[55] = "virtconsole,chardev=forhvc1"
INFO    | 	 argv[56] = "-chardev"
INFO    | 	 argv[57] = "netsim,id=bluetooth"
INFO    | 	 argv[58] = "-device"
INFO    | 	 argv[59] = "virtserialport,chardev=bluetooth,name=bluetooth"
INFO    | 	 argv[60] = "-device"
INFO    | 	 argv[61] = "virtio-serial,ioeventfd=off"
INFO    | 	 argv[62] = "-chardev"
INFO    | 	 argv[63] = "socket,port=50109,host=::1,nowait,nodelay,reconnect=10,ipv6,id=modem"
INFO    | 	 argv[64] = "-device"
INFO    | 	 argv[65] = "virtserialport,chardev=modem,name=modem"
INFO    | 	 argv[66] = "-device"
INFO    | 	 argv[67] = "virtio-rng-device"
INFO    | 	 argv[68] = "-show-cursor"
INFO    | 	 argv[69] = "-device"
INFO    | 	 argv[70] = "virtio_input_multi_touch_pci_1"
INFO    | 	 argv[71] = "-device"
INFO    | 	 argv[72] = "virtio_input_multi_touch_pci_2"
INFO    | 	 argv[73] = "-device"
INFO    | 	 argv[74] = "virtio_input_multi_touch_pci_3"
INFO    | 	 argv[75] = "-device"
INFO    | 	 argv[76] = "virtio_input_multi_touch_pci_4"
INFO    | 	 argv[77] = "-device"
INFO    | 	 argv[78] = "virtio_input_multi_touch_pci_5"
INFO    | 	 argv[79] = "-device"
INFO    | 	 argv[80] = "virtio_input_multi_touch_pci_6"
INFO    | 	 argv[81] = "-device"
INFO    | 	 argv[82] = "virtio_input_multi_touch_pci_7"
INFO    | 	 argv[83] = "-device"
INFO    | 	 argv[84] = "virtio_input_multi_touch_pci_8"
INFO    | 	 argv[85] = "-device"
INFO    | 	 argv[86] = "virtio_input_multi_touch_pci_9"
INFO    | 	 argv[87] = "-device"
INFO    | 	 argv[88] = "virtio_input_multi_touch_pci_10"
INFO    | 	 argv[89] = "-device"
INFO    | 	 argv[90] = "virtio_input_multi_touch_pci_11"
INFO    | 	 argv[91] = "-netdev"
INFO    | 	 argv[92] = "user,id=virtio-wifi,dhcpstart=10.0.2.16"
INFO    | 	 argv[93] = "-device"
INFO    | 	 argv[94] = "virtio-wifi-pci,netdev=virtio-wifi"
INFO    | 	 argv[95] = "-device"
INFO    | 	 argv[96] = "virtio-vsock-pci,guest-cid=77"
INFO    | 	 argv[97] = "-L"
INFO    | 	 argv[98] = "/usr/local/share/android-sdk/emulator/lib/pc-bios"
INFO    | 	 argv[99] = "-soundhw"
INFO    | 	 argv[100] = "virtio-snd-pci"
INFO    | 	 argv[101] = "-append"
INFO    | 	 argv[102] = "no_timer_check 8250.nr_uarts=1 console=ttyAMA0,38400 keep_bootcon earlyprintk=ttyAMA0 cma=294M@0-4G ndns=3 loop.max_part=7 printk.devkmsg=on bootconfig"
INFO    | 	 argv[103] = "-android-hw"
INFO    | 	 argv[104] = "/Users/vagrant/.android/avd/../avd/emulator.avd/hardware-qemu.ini"
INFO    | Concatenated QEMU options: /usr/local/share/android-sdk/emulator/qemu/darwin-aarch64/qemu-system-aarch64-headless -dns-server 8.8.8.8,1.1.1.1,4.2.2.2 -no-audio -serial stdio -cpu cortex-a53 -machine type=virt -enable-hvf -smp cores=3 -m 2048 -lcd-density 440 -nodefaults -kernel /usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a//kernel-ranchu -initrd /Users/vagrant/.android/avd/../avd/emulator.avd/initrd -drive index=0,id=vendor,if=none,file=/usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a//vendor.img,read-only -device virtio-blk-device,drive=vendor -drive index=1,id=encrypt,if=none,file=/Users/vagrant/.android/avd/../avd/emulator.avd/encryptionkey.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576 -device virtio-blk-device,drive=encrypt -drive index=2,id=userdata,if=none,file=/Users/vagrant/.android/avd/../avd/emulator.avd/userdata-qemu.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576 -device virtio-blk-device,drive=userdata -drive index=3,id=cache,if=none,file=/Users/vagrant/.android/avd/../avd/emulator.avd/cache.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576 -device virtio-blk-device,drive=cache -drive index=4,id=system,if=none,file=/usr/local/share/android-sdk/system-images/android-34/google_apis/arm64-v8a//system.img,read-only -device virtio-blk-device,drive=system -netdev user,id=mynet -device virtio-net-device,netdev=mynet -chardev null,id=forhvc0 -chardev null,id=forhvc1 -device virtio-serial-pci,ioeventfd=off -device virtconsole,chardev=forhvc0 -device virtconsole,chardev=forhvc1 -chardev netsim,id=bluetooth -device virtserialport,chardev=bluetooth,name=bluetooth -device virtio-serial,ioeventfd=off -chardev socket,port=50109,host=::1,nowait,nodelay,reconnect=10,ipv6,id=modem -device virtserialport,chardev=modem,name=modem -device virtio-rng-device -show-cursor -device virtio_input_multi_touch_pci_1 -device virtio_input_multi_touch_pci_2 -device virtio_input_multi_touch_pci_3 -device virtio_input_multi_touch_pci_4 -device virtio_input_multi_touch_pci_5 -device virtio_input_multi_touch_pci_6 -device virtio_input_multi_touch_pci_7 -device virtio_input_multi_touch_pci_8 -device virtio_input_multi_touch_pci_9 -device virtio_input_multi_touch_pci_10 -device virtio_input_multi_touch_pci_11 -netdev user,id=virtio-wifi,dhcpstart=10.0.2.16 -device virtio-wifi-pci,netdev=virtio-wifi -device virtio-vsock-pci,guest-cid=77 -L /usr/local/share/android-sdk/emulator/lib/pc-bios -soundhw virtio-snd-pci -append 'no_timer_check 8250.nr_uarts=1 console=ttyAMA0,38400 keep_bootcon earlyprintk=ttyAMA0 cma=294M@0-4G ndns=3 loop.max_part=7 printk.devkmsg=on bootconfig' -android-hw /Users/vagrant/.android/avd/../avd/emulator.avd/hardware-qemu.ini
DEBUG   | Android qemu version 34.1.18.0 (build_id 11481568) (CL:N/A)
DEBUG   | Starting QEMU main loop
DEBUG   | registered 'boot-properties' qemud service
DEBUG   | Adding boot property: 'ro.opengles.version' = '196609'
DEBUG   | Adding boot property: 'qemu.sf.fake_camera' = 'none'
DEBUG   | Adding boot property: 'dalvik.vm.heapsize' = '512m'
DEBUG   | Adding boot property: 'qemu.hw.mainkeys' = '0'
DEBUG   | Adding boot property: 'qemu.sf.lcd_density' = '440'
HVF error: HV_UNSUPPORTED
qemu-system-aarch64-headless: failed to initialize HVF: Invalid argument
WARNING | QEMU main loop exits abnormally with code 1
INFO    | Wait for emulator (pid 9097) 10 seconds to shutdown gracefully before kill;you can set environment variable ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL(in seconds) to change the default value (20 seconds)
INFO    | Wait for emulator (pid 9097) 20 seconds to shutdown gracefully before kill;you can set environment variable ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL(in seconds) to change the default value (20 seconds)
DEBUG   | User configuration saved to /Users/vagrant/.android/avd/../avd/emulator.avd/emulator-user.ini
DEBUG   | sending STOP to modem simulator host server
DEBUG   | received exit request from parent process
DEBUG   | waiting for monitor thread to join
DEBUG   | requested to exit now
 %!s(int=0) %!s(bytes.readOp=0)}
Emulator exited early, see logs above.
This Step is not yet supported on Apple Silicon (M1) machines. If you cannot find a solution to this error, try running this Workflow on an Intel-based machine type.
Emulator exited early, see logs above.
|                                                                              |
+---+---------------------------------------------------------------+----------+
| x | AVD Manager (Failed)                                          | 1.2 min |
+---+---------------------------------------------------------------+----------+
| Issue tracker: https://github.com/bitrise-steplib/steps-avd-manager/issues   |
| Source: https://github.com/bitrise-steplib/steps-avd-manager                 |
+---+---------------------------------------------------------------+----------+

Hi @luke92 ,

Android emulators won’t start on the macOS machine types, as Apple Silicon CPU doesn’t support nested virtualization. We suggest either using the Virtual device testing solution or you could simply run your Android workflow on one of our Linux machine types.

There is a realistic chance, that for newer generation(M4) of Apple Silicon machines we will be able to provide Android emulator capabilities, since Apple will start supporting nested virtualization.

Hi!
Thanks for your reply.

Is there any tutorial using a React Native Project with Detox for run the detox tests over the virtual device testing solution?

Thanks

Anyway, i have this error now

+ detox test --configuration android.emu.bitrise --record-videos all --take-screenshots all --record-logs all
01:44:15.063 detox[9020] B jest --config e2e/jest.config.js
01:44:20.160 detox[9032] i starter.test.js is assigned to emulator-5554 (emulator)
01:44:20.204 detox[9032] i Emulator Timezone: Etc/UTC
01:44:20.205 detox[9032] i Setting process.env.TZ Android to: Etc/UTC
01:47:27.589 detox[9032] i Example: should have Step one
01:47:30.280 detox[9032] i Detox can't seem to connect to the test app(s)!
HINT: 
Have you forgotten to call 'device.launchApp()' in the beginning of your test?
Refer to our troubleshooting guide, for full details: https://wix.github.io/Detox/docs/troubleshooting/running-tests#tests-execution-hangs
---
The following package could not be delivered:
{
  type: 'reactNativeReload',
  params: {},
  messageId: -1000
}
01:47:32.313 detox[9032] i Example: should have Step one [FAIL]
68 |
      69 |   beforeEach(async () => {
    > 70 |     await device.reloadReactNative();
         |                  ^
      71 |   });
      72 |
      73 |   it('should have Step one', async () => {
      at Object.reloadReactNative (e2e/starter.test.js:70:18)
      at asyncGeneratorStep (node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:17)
      at _next (node_modules/@babel/runtime/helpers/asyncToGenerator.js:17:9)
      at node_modules/@babel/runtime/helpers/asyncToGenerator.js:22:7
      at Object.<anonymous> (node_modules/@babel/runtime/helpers/asyncToGenerator.js:14:12)

And this is my code

beforeAll(async () => {
    await device.launchApp({
      launchArgs: {
        detoxEnableSynchronization: 'NO',
      },
    });
  });

  beforeEach(async () => {
    await device.reloadReactNative();
  });

This is my .detoxrc.js

'android.debug': {
      type: 'android.apk',
      binaryPath: 'android/app/build/outputs/apk/debug/app-debug.apk',
      build: 'cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug',
      reversePorts: [8081],
    },

And my workflow is this

android:
    description: |
      Runs tests.

      Next steps:
      - Check out [Getting started with React Native apps](https://devcenter.bitrise.io/en/getting-started/getting-started-with-react-native-apps.html).
    steps:
    - git-clone@8: {}
    - restore-npm-cache@1: {}
    - npm@1:
        title: Run Unit test with NPM
        inputs:
        - workdir: "$WORKDIR"
        - command: install
    - yarn@0:
        title: Run Unit test with YARN
        inputs:
        - cache_local_deps: 'yes'
        - command: install
    - npm@1:
        inputs:
        - command: test
    - yarn@0:
        inputs:
        - command: test
    - script@1:
        inputs:
        - content: |-
            #!/usr/bin/env bash
            # fail if any commands fails
            set -e
            # debug log
            set -x

            avdmanager list device
            sdkmanager --list
        - script_file_path:
        title: Show AVD Manager Info
    - avd-manager@1:
        inputs:
        - profile: pixel_3a
        - api_level: 34
        - abi: x86_64
    - wait-for-android-emulator@1: {}
    - script@1:
        title: Show Emulators
        inputs:
        - script_file_path:
        - content: |-
            #!/usr/bin/env bash
            # fail if any commands fails
            set -e

            # debug log
            set -x

            emulator -list-avds
    - script@1:
        title: Install Detox CLI
        inputs:
        - content: |-
            #!/usr/bin/env bash
            # fail if any commands fails
            set -e
            # debug log
            set -x

            npm install -g detox-cli
    - script@1:
        inputs:
        - script_file_path:
        - content: |-
            #!/usr/bin/env bash
            # fail if any commands fails
            set -e
            # debug log
            set -x

            detox build -c android.emu.bitrise
        title: Detox Build Android
    - script@1:
        title: ADB Reverse Port
        inputs:
        - script_file_path:
        - content: |-
            #!/usr/bin/env bash
            # fail if any commands fails
            set -e

            # debug log
            set -x

            adb reverse tcp:8081 tcp:8081
    - script@1:
        inputs:
        - script_file_path:
        - content: |-
            #!/usr/bin/env bash
            # fail if any commands fails
            set -e
            # debug log
            set -x

            detox test --configuration android.emu.bitrise --record-videos all --take-screenshots all --record-logs all
        title: Detox E2E Android Test
    - script@1:
        is_always_run: true
        inputs:
        - content: |-
            #!/usr/bin/env bash
            # fail if any commands fails
            set -e
            # debug log
            set -x

            cp -R artifacts $BITRISE_DEPLOY_DIR
        title: Publish Test Artifacts
    - deploy-to-bitrise-io@2:
        inputs:
        - is_compress: 'true'
        - deploy_path: "/Users/vagrant/deploy/artifacts"
    meta:
      bitrise.io:
        stack: linux-docker-android-22.04
        machine_type_id: standard
  deploy:
    description: |
      Tests, builds and deploys the app using *Deploy to bitrise.io* Step.

      Next steps:
      - Set up an [Apple service with API key](https://devcenter.bitrise.io/en/accounts/connecting-to-services/connecting-to-an-apple-service-with-api-key.html).
      - Check out [Getting started with React Native apps](https://devcenter.bitrise.io/en/getting-started/getting-started-with-react-native-apps.html).
    steps:
    - git-clone@8: {}
    - npm@1:
        inputs:
        - workdir: "$WORKDIR"
        - command: install
    - npm@1:
        inputs:
        - workdir: "$WORKDIR"
        - command: test
    - install-missing-android-tools@3:
        inputs:
        - gradlew_path: "$PROJECT_LOCATION/gradlew"
    - android-build@1:
        inputs:
        - project_location: "$PROJECT_LOCATION"
        - module: "$MODULE"
        - variant: "$VARIANT"
    - cocoapods-install@2:
        inputs:
        - is_cache_disabled: 'true'
    - xcode-archive@5:
        inputs:
        - project_path: "$BITRISE_PROJECT_PATH"
        - scheme: "$BITRISE_SCHEME"
        - distribution_method: "$BITRISE_DISTRIBUTION_METHOD"
        - configuration: Release
        - automatic_code_signing: api-key
    - deploy-to-bitrise-io@2: {}

In my local machine works fine for android and iOS and works well on iOS Workflow running in Bitrise

Hi,

Let me ask the team :slight_smile:

Please enable support access so they can look at your app - Enabling the Bitrise Support Access for your app - Bitrise Docs

Thanks
Enabled the support access!

Do you have any update?
If you need it, here is the Github project that has a blank project with some examples that I am trying to run on Android e2e in Bitrise

My idea is to try to run this and, once it works, implement it in a private project at my work to automate Android tests (we already managed to do iOS tests)
Thanks