1

In an app I am developing, I need to use a C library. This means I'm going to have to deal with all the different instruction sets of all the different Android devices, right?

Is there any list available (or maybe somebody can just tell me?) of all these instruction sets? I know that all Android devices so far are 32-bit, but of course there's a lot more to it than that.

Zero
  • 1,864
  • 3
  • 21
  • 39

2 Answers2

3

The big three are ARMv5, ARMv7, and x86. ARMv7 devices can run ARMv5 instructions. ARMv7 CPUs have a floating-point co-processor, though, whereas ARMv5 do not. Hence, if you are doing a lot of floating-point work, I'd definitely have the NDK generate .so files for each of those architectures. If you are not doing floating-point math, you could try skipping ARMv5.

While most Android devices are powered by ARM, x86 is making a late comeback. I have a blog post discussing libhoudini as a way to avoid having dedicated x86 binaries, at a performance cost.

There is also Android support for MIPS. The next MIPS-powered Android device I see will be my first. Hence, developers often don't worry about this one, even though the NDK supports it (IIRC).

CommonsWare
  • 986,068
  • 189
  • 2,389
  • 2,491
  • Thanks for your response, already accepted as the answer! I still have a question though: approximately what percentage of Android devices is covered by ARMv5, ARMv7 and x86? – Zero Feb 18 '14 at 12:22
  • @Zero: Google does not publish statistics on this, and I do not recall seeing another survey, though there probably is one. x86 is probably ~1%. ARMv7 may have overtaken ARMv5 by now, and certainly will have in higher-end markets. ARMv5 was what Android devices used originally, and I am under the impression that low-end Android devices, aimed at emerging markets, still ship with ARMv5 CPUs, probably for lower parts cost. AFAIK, all multi-core ARM CPUs for Android are ARMv7. – CommonsWare Feb 18 '14 at 12:30
0

Here is the List of android sets :

  • armeabi
  • armeabi-v7a
  • armeabi-v7a-hard
  • arm64-v8a
  • x86
  • x86_64
  • mips
  • mips64
Nirav Mistry
  • 949
  • 5
  • 15