8

Okey, BlueStacks is a bit slow on my pc, so I read somewhere in the internet that Genymotion is a bit faster then BlueStacks. Then I downloaded Genymotion and installed it. And after a lot of complex steps I finally understood that I need ARM translation and Google app for playing Android games. Now, I can understand that Google app is needed for getting the play store. But I am still in the dark about the 'ARM translation'. Why is it needed? what does it do? what happens if I don't use the ARM translation? And lastly, what does ARM stands for?

-Thanks in advance.

Giliweed
  • 4,997
  • 8
  • 26
  • 35

2 Answers2

2

ARM is a processor architecture, you can read more about it here.

Android apps are sometimes designed with X86 architecture and sometimes with ARM. You have to install the ARM translation in order to install on your emulator apps that use ARM architecture.

It's not a must have, but a lot of apps won't work without it.

nirsky
  • 2,955
  • 3
  • 22
  • 35
2

Android games generally make use of OpenGL ES which is built from the ground up to work specifically with an ARM SoC. The Android NDK itself allows game developers to optimize their software by using C/C++ and even ARM assembly code.

The GenyMotion emulators are designed to work around an Intel x86 / x64 architecture, which is why they are faster than the Android emulators. But because of that, and because they have now decided to forgo ARM translation, they cannot run games.

A standard Android emulator actually compiles Java source to dex, and dex to ARM assembly, and these ARM instructions are run on an ARM emulation called QEMU. This makes the Android emulator incredibly slow, as it is in effect running an emulation of an ARM processor on top of an Intel-Windows machine. But it is able to run games.

The Android emulators emulate, while GenyMotion is more effectively a simulation.

Yash Sampat
  • 30,051
  • 12
  • 94
  • 120
  • 1
    some thruth, some errors here. OpenGL has nothing to do with ARM or X86. An emulator does not really compile code. Dex bytecode is never compiled to ARM assembly. – pcans Mar 04 '15 at 08:24
  • your comment forced me to re-assess my own understanding. I have seen that the NDK allows you to write part of your code in ARM assembly if you want to, so I automatically assumed that OpenGL ES must be similarly optimized. I couldn't find any useful articles on the internal working of emulators, could you please point me in the right direction ? – Yash Sampat Mar 05 '15 at 11:49