I'm working on a small Android app, and it runs fine on my own phone, but a couple of testers have reported crashes that I can't reproduce. They're using different Android versions and screen sizes, so testing everything on one physical device clearly isn't enough. I'd like to set up several virtual Android environments where I can install the app, reproduce bugs and check how it behaves after updates. What should I look for when choosing a virtual machine for Android testing, and are there any options that work well without maintaining a collection of physical phones?
Two bug reports from phones you don't own are already enough to make one-device testing pretty frustrating. You fix something, everything looks fine locally, and then somebody with another Android version finds a new problem. Start with Android Studio Emulator and create a small set of devices with different Android versions, resolutions and screen sizes. Keep those same virtual devices for every release and run the app through them before sending an update out. That gives you a repeatable test setup without buying a drawer full of phones.
Start with this comparison of the best virtual machine options for Android: https://gologin.com/blog/best-virtual-machine-for-android/ . The tools there are built for very different jobs, so don't judge them all by the same checklist. For app testing, pay more attention to whether a service is actually aimed at development and QA, how much control it gives you over the Android environment, and what the cloud usage will cost over longer test sessions. Genymotion is the developer-focused option in that comparison, while several others are aimed more at gaming, multi-account work or running a second Android environment.