Android/iOS emulator: the saga of an invented (and improved) wheel

Android/iOS emulator: the saga of an invented (and improved) wheel

What happens when a developer gets frustrated with a complex process? You search the net for possible workarounds. And, if nothing is found, you create the workaround yourself. Next, you publish your tool so other developers don’t have to reinvent the wheel. That’s how you get your two minutes (and several thousands of downloads) of fame. Here’s how I shared my invented wheel.    

I am Diemas Michiels, Frontend Web Developer at icapps, by the way. 
 

Diemas Michiels

 

The following may sound familiar to some of you. Until recently, a developer who wished to launch an Android Emulator from their PC while developing, had to keep Android Studio running all of the time. A far from ideal solution, as this is a highly energy-consuming program, causing your PC to slow down and to drastically reduce your battery life. 

This ‘suboptimal’ situation kept haunting me, and often led to frustrations because it tended to drag down my productivity and consequently my good mood as well. So I went searching for a workaround that would allow me to use the Android Emulator without having to burden my machine excessively. Only to find out after a while that no such tool was available yet.

So what is a self-respecting developer to do? Write the solution myself, obviously. That’s what has led me to write the VS Code extension.

 

 

Not an easy task, as there was little source material available that I could use as a starting point. Not surprisingly, of course: the lack of solution already suggested that the community surrounding such a solution was rather small. Not many developers are full-time extension programmers, therefore the number of specialists and content contributors was very limited.

Nevertheless, I managed to create my workaround extension rather quickly (in a weekend) and to release a first, Android-only, version in April 2018. Later on, I also produced an iOS version, followed by other operating systems and extra features for the existing extensions. 

Although I created the extension in the first place to simplify my own life and to enhance my productivity, I decided to make my code open source and to share it with the developer community through the Github platform. In the first place because I wished someone had done it before me (but someone has to be first, right?). Secondly, because it is nice to see your product being used and appreciated by so many people. I had hoped for about 25.000 downloads, a goal I could reach. But in the meantime, it has reached over 51.000 downloads. Quite an ego boost, I must admit.

But there’s another important reason for me to share my code. When making your program available for others to use, you also expect them to contribute to the code in order to improve the code. This has actually happened already. Anton Holmberg has enabled the program to make use of older emulators too. Jarrod Colburn has committed a version for the Linux operating system. And many other developers are still submitting suggestions to improve the code overall. The extension has now reached a breadth and maturity I would never have reached on my own

The extension is now frequently being used, both by icapps developers and by the outside community. The Flutter community, for instance, has eagerly adopted the extension, although it was absolutely not specifically intended for this environment. It shows the strength of this extension: it can start a device from any computer, regardless of the programming language. That’s why a variety of developers in several regions has made use of this solution. Even in China, the extension has been deployed in a Flutter environment.

 

I would like to end my story with a brief overview of the mentions in the international press, collected by a proud dad:  

https://adtmag.com/articles/2019/05/21/vs-code-mobile.aspx

https://stackoverflow.com/a/50868126/11703089

https://stellirin.com/flutter/prepare.html (flutter)

https://jonny-huang.github.io/flutter/flutter_001/ (CHINA: flutter)