I was looking for an online emulator for Android and I found this: https://www.manymo.com
Most of android developer might be familiar with this or may be not, as its quit new in the market.
So as developer, first thought came in my mind is, how it works (many of you will think after checking this out).
My research: At front-end it is using Canvas, which is taking input from user and displaying response as an screen image. So front end is pretty clear to me.
Now at back-end I am not pretty sure, what technique they are using (regardless programming language or platform). What I think is they run a Emulator instance for each session on there server and some how they capture its screen and invoke input at certain places of screen.
So the confusing part is, how they are sending inputs to Emulator and geting screen of emulator, at server side?
Any clue will be helpful.
An Android emulator is a tool that creates virtual Android devices (with software and hardware) on your computer. Note that: It is a program (a process that runs on your computer's operating system). It works by mimicking the guest device's architecture (more on that in a bit).
Run your app on the emulator After you have created an Android Virtual Device (AVD), you can start the Android Emulator and run an app in your project: In the toolbar, select the AVD that you want to run your app on from the target device drop-down menu. Click Run.
An Android emulator is an Android Virtual Device (AVD) that represents a specific Android device. You can use an Android emulator as a target platform to run and test your Android applications on your PC. Using Android emulators is optional.
It seems they are using noVNC Client (see HTML Source).
On Server side they can use any Emulator with VNC Support.
The inefficient-but-expedient solution is to use existing testing frameworks or their underlying engines, like ChimpChat.
The efficient-but-tedious solutions include:
Hooking into qemu
, the emulation engine that drives the Android emulator, and/or
Running modified emulator images, with modify firmware, that enable this
I think they are sending inputs to emulator using monkeyrunner script.we have used monkeyrunner script for generating screenshots for one of our android application. but i don,t know which technique they are using to run emulator instance for each session because emulator required lots of CPU resource.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With