Question

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.

Was it helpful?

Solution

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).

OTHER TIPS

Here is the List of android sets :

  • armeabi
  • armeabi-v7a
  • armeabi-v7a-hard
  • arm64-v8a
  • x86
  • x86_64
  • mips
  • mips64
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top