Android Emulator for Development

Cloud over the fens

Identify a suitable Android Emulator for Development with Arcus Global.

Introduction

We have identified a requirement for an Android Emulator for an application we're creating using data hosted by a 3rd party. The 3rd party is in the process of developing their own HTML5 offering so it is envisaged that within the year we will use their offering. In the mean-time we're developing a mobile application targeted at an Android Tablet (tentative).

As such we've identified a technology stack which includes a specific AOuth solution provided by the 3rd party. Because of the target we've chosen to use PhoneGap/Apache Cordova along with jQuery mobile. This allows us to develop using HTML and has speeded the development process immensely. Unfortunately, whilst the development process is now significantly faster than creating a native Android App, we're still left with a slow testing environment in the form of the Android Emulator bundled with the Android SDK.

We needed to investigate a faster testing platform for our development which provides, above all other considerations, security and speed. Alongside this the following considerations were identified after consultation with the development team:

  • Integration within Eclipse – The default IDE used in the creation of Hybrid Android Applications. IF we had access to error messages thrown by the emulator this would be very useful for debugging.
  • Price – We generally prefer using not only free but also open source approaches, this is not set in stone however and we're aware that a paid product may provide more functionality.
  • Maturity – We're keen to use a well-established product which is proven.
  • Quality – This is a nebulous requirement at the best of times but could be considered an amalgamation of those considerations not already mentioned in this list.
  • Support – Whilst not un-savvy in the ways of technology it would be reassuring that should we have a problem then there are recognised approaches to solving those problems.
  • References – Whilst these are generally best sourced from other commercial sources the wisdom of the crowd is also of importance.
  • Reliability – This indicates how reliable the product is.
  • Ease of use – Again, we're not un-experienced in terms of technology, but something that just works would be ideal.
  • Maintenance – Closely linked to Support, this is important in terms of support for new iterations of the Android OS.

Further we're particularly keen to be able to mimic the hardware functionality of the actual Tablet, as such we'd appreciate access to the hosts camera and other sensors, the ability to mimic other aspects of the Android OS would be useful such as pinch-to-zoom.

All of our development machines are currently Samsung laptops running 64bit Windows 7.

Methodology

We've decided to adapt a tool authored by a colleague in a previous role. This involves weighting each of the above considerations and assigning a score for each of the identified Emulator solutions. Once each emulator has been scored we can compare all of the scores and make a recommendation to the wider team.

Emulators identified

Android SDK Emulator

The Android SDK Emulator which ships with the Android SDK emulates an ARM powered mobile device, at present it seems to be limited to a display aspect ratio similar to a mobile phone (i.e. portrait) with no easy method to convert this to a landscape orientation.

BlueStacks

The BlueStacks Emulator was known to at least one of the development team as a method of using Android Software within a PC – it was not initially known as a formal emulator but initial – unregulated – tests suggested its use in this context.

Android-x86

This is a port of the Android OS to x86 processors. As noted above the Android SDK Emulator runs a virtual ARM processor atop the host machines processor: effectively adding a further layer of abstraction. The Android-x86 removed that layer.

Appcelerator Titanium Mobile

This offers not only an Emulator but also a replacement for PhoneGap. There is a significant debate over the merits of Appcelerator Titanium Mobile over PhoneGap (please see https://www.google.co.uk/search?q=appcelerator+vs+phonegap&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-GB:official&client=firefox-a) but the design decision to use PhoneGap/jQuery mobile means that in order to test the Appcelerator Titanium Mobile Emulator the Appcelerator Titanium Mobile IDE must be installed and the App re-written to make use of the technology made available in this platform. Upon installation of the IDE (a not insignificant process involving signing up on a website, amongst other things) I came to the conclusion that the investment of time/effort involved in re-writing the App in order to test an Emulator was unlikely to make up for any ease associated with the Emulator.

Results

Each of the first 3 Emulators we're tested and scored as detailed below, further notes are included after each evaluation. The Weight is scored 1 – 5 with 1 being least important and 5 being of most importance. The Score is between 1 – 10 with 1 being the lowest score and 10 being the highest.

Android SDK Emulator

Candidate Scoring Sheet

Criteria Weight (1 - 5) Score (1 - 10) Composite
Speed
Installation 2 3 6
Cold Booting 4 3 12
Deployment 5 3 15
Security
Product 4 9 36
Data on Product 2 9 18
Host Machine 5 9 45
Vendor
Maturity 4 8 32
Quality 5 5 25
Support 5 6 30
References (Commercial) 2 4 8
References (Community) 3 4 12
Maintenance 2 8 16
Product
Price 4 10 40
Reliablity 4 7 28
Ease of Use 4 3 12
Integration with IDE 5 8 40
Interface 5 3 15
Integration with Host Services 5 3 15
Total = 405

Notes

This scored high in terms of security but low in terms of speed and in terms of its integration with the host machine and it's interface. It didn't fail but because of its speed it seemed a little unusable at times.

BlueStacks

Candidate Scoring Sheet

Criteria Weight (1 - 5) Score (1 - 10) Composite
Speed
Installation 2 6 12
Cold Booting 4 9 36
Deployment 5 9 45
Security
Product 4 7 28
Data on Product 2 7 14
Host Machine 5 9 45
Vendor
Maturity 4 6 24
Quality 5 9 45
Support 5 8 40
References (Commercial) 2 9 18
References (Community) 3 9 27
Maintenance 2 7 14
Product
Price 4 10 40
Reliablity 4 7 28
Ease of Use 4 9 36
Integration with IDE 5 8 40
Interface 5 9 45
Integration with Host Services 5 9 45
Total = 582

Notes

Whilst still in Beta BlueStacks is blisteringly fast in comparison to the Android SDK Emulator. According to its website it isn't classed as an Emulator though:

BlueStacks is not technically an Android emulator at all, but it does achieve a similar effect. If you're looking for an android emulator and compare the one that comes with the Android SDK to BlueStacks for example, you'll find the latter to be much faster. Many Android Developers looking for an Android Emulator to test their apps on are very happy to find BlueStacks.

There are no issues recorded as to its vulnerability to attack and the TOC associated with it seem pretty comprehensive in its security/privacy policy. It is also able to access the Camera on out Samsung laptops and the aspect ratio mimics that of a landscape tablet interface.

Commercially BlueStacks seem to be moving from strength-to-strength with Asus expressing an interest in the company.

Android-x86

Candidate Scoring Sheet

Criteria Weight (1 - 5) Score (1 - 10) Composite
Speed
Installation 2 2 4
Cold Booting 4 4 16
Deployment 5 1 5
Security
Product 4 9 26
Data on Product 2 9 18
Host Machine 5 9 45
Vendor
Maturity 4 2 8
Quality 5 5 25
Support 5 6 30
References (Commercial) 2 1 2
References (Community) 3 6 18
Maintenance 2 8 16
Product
Price 4 10 40
Reliablity 4 5 20
Ease of Use 4 1 4
Integration with IDE 5 1 5
Interface 5 1 5
Integration with Host Services 5 1 5
Total = 292

Notes

Android-x86 isn't an Emulator as such but an OS in its own right. It is perhaps unfair to include it in this it was installed on a Virtual Machine – as such it was unusable except when using the arrow keys. There was no ability to use the touch interface as there is with the Android SDK Emulator which creates pseudo hardware keys for the user to interact with. There wasn't even pointer integration as there is with the Android SDK Emulator.

Conclusion

Composite Scoring Sheet

Criteria SDK BlueStacks Android-x86
Speed
Installation 6 12 4
Cold Booting 12 36 16
Deployment 15 45 5
Security
Product 36 28 26
Data on Product 18 14 18
Host Machine 45 45 45
Vendor
Maturity 32 24 8
Quality 25 45 25
Support 30 40 30
References (Commercial) 8 18 2
References (Community) 12 27 18
Maintenance 16 14 16
Product
Price 40 40 40
Reliablity 28 28 20
Ease of Use 12 36 4
Integration with IDE 40 40 5
Interface 15 45 5
Integration with Host Services 15 45 5
Total = 405 582 292

Discussion

We have, to an extent, not compared apples with apples in that neither BlueStacks nor Android-x86 being officially classed as Emulators. BlueStacks manages to create the functionality that we desire alongside being significantly faster than the bundled Emulator though. It is concluded that BlueStacks offers a suitable platform for testing our Hybrid Android App.