While downloading Android apps, sometimes I have seen apps for armeabi-v7a and x86 architecture.

I read some references for armeabi-v7a and x86 architecture. However, at the end, I couldn't finalize which mobile processors and architectures belong to armeabi-v7a and which belong to x86.

As per my knowledge, mobile processors commonly used in Android devices are Snapdragon (by Qualcomm), MediaTek, Exynos (by Samsung) and Kirin (by Huawei). Almost all brands explain specifications of a smartphone and almost all specifications say mobile processor is 64-bit or not. Should I conclude that 64-bit of mobile processors (Snapdragon, MediaTek, Exynos or Kirin) belong to ARM architecture?

To understand which SoC supports armeabi-v7a Android apk and which SoC supports x86 Android apk, I have gone through the specifications of MediaTek Helio X30 and Snapdragon 855. The specification of Helio X30 says, it supports dual-core ARM Cortex-A73 and quad-core ARM Cortex-A53 but ARM is not mentioned anywhere in the specification of Snapdragon 855. So should I conclude that Helio X30 will support armeabi-v7a Android apps and Snapdragon 855 will not support armeabi-v7a apps?

Please clarify my confusions.


Here are my incomplete summarized notes on the subject, but enough to answer your question.


Processors are made of semiconductor dies, usually electronic-grade mono-crystalline silicon. They don't know English or any other human language, they understand only 0 and 1. So the designer of processor tells us in what sequence of zero's and one's we can instruct that specific processor. This numerical language of instructions is standardized as Machine Language and the set of machine instructions is called Instruction Set. A processor can act upon only a single type of instruction set.
Instruction sets can be 8/16/32/64-bit (defines how many instructions a processor can process at a time), last 2 being the common one these days.


But writing program code (instructions) directly in machine language (the executable file) is near to impossible because it will take years to write and debug a reasonably larger program (that we can write in a few hours these days). So to put programmers at ease, Assembly Language was developed, still a processor-specific language but relatively easy to understand. Code written in Assembly Language is converted into machine code by Assembler - a program written in Machine language. Both of these are called Low Level languages.


To further reduce human effort in communicating with hardware, high level languages were developed which are not bound to a specific instruction set (denoting a specific architecture). These are identical to human languages, hence easy to write, understand, debug and apply to multiple architectures. Code written in high level language is converted into low level language by Compiler - a program written in low level language. One of the most commonly used high level languages is C. But sometimes code is not pre-compiled to machine code, instead directly executed (or compiled during execution) by Interpreter. Java is one of such "write once, run anywhere" (WORA) languages which is compiled to byte-code and then interpreted by Virtual Machine - again a compiled program.


Since an architecture-independent program (code) can be converted to architecture-dependent code for any processor, it's the duty of compiler to take care of all the requirements of a specific architecture. That's what Application Binary Interface (ABI) defines. In simple terms, an ABI represents one or more specific architectures. Furthers details on Embedded ABIs require an insight into stages of Assembling and Compiling; object code, Executable and Linkable Format (ELF), static (archiving) and dynamic linking of libraries etc.

Now coming to your question:


x86 is a family of instruction sets, mainly developed by Intel and AMD. ARM is another family, designed by a single entity ARM Holdings and being licensed to many embedded solution manufacturers including Qualcomm, Mediatek, Samsung and Huawei. Snapdragon, Exynos and Kirin are their brand names. They are not processor manufacturers but they have licenses to include ARM processors with their own System on Chip (SoC) circuits.


A System on Chip (SoC) is a small circuit that includes processors along with other components such as GPU, RAM, Flash/eMMC (equivalent of HDD or SSD), WiFi and bluetooth module, USB connectivity, UART (serial ports), JTAG (a very lower level serial communication protocol), GPS, modems (for cellular connectivity) and possibly others.


Though the major part of Android apps is written in Java, one can program in native languages like C and C++, which needs to be compiled. Android provides its own Native Development Kit (NDK) including (libraries, header files and) a compiler that can compile code for multiple ABIs including armeabi-v7a and x86.
So an Android (Java) app itself isn't specific to an architecture. Java byte-code (classes.dex file inside .apk file) is executable on any Android device in a separate instance of Dalvik Virtual Machine run for every app by a process named Zygote. But if the apk (zip) file additionally contains ELF binaries/libraries, those are architecture-specific.

Native applications/programs/binaries/executable/libraries built with compiler suites targeting ARM Embedded ABI v7a (armeabi-v7a) can be run on Application profile of 7th version of ARM processors (Armv7-A).

32-BIT VS. 64-BIT:

ARM processor can be 32-bit or 64-bit. It depends on SoC manufacturers what they want to build with their embedded system e.g. Snapdragon can be 32-bit or 64-bit. 32-bit ARM processors were improved for performance and new features were added from version 2 to version 7. 64-bit support was introduced in ARMv8.

To find out if a device is 32-bit or 64-bit, you need to check out specifications of its SoC and then of its processor. For instance if an SoC contains Cotrex-53 processor such as Qualcomm Snapdragon 625 (MSM 8953), it's evident from technical specifications of Cortex-53 that it's a 64-bit ARMv8 processor having full backward compatibility with 32-bit ARMv7. So it can run binaries/libraries compiled both for ABI armeabi-v7a and arm64-v8a, but not for armeabi or x86.


The number of hardware devices that use x86 was never very high. Some years ago Intel had some x86 processors (Intel Atom) that were used in some Android tablets (e.g. Samsung Galaxy Tab 10.3).

However those tablets never reached a high volume on the market. And I am not sure if there is any x86 Smartphone or tablet on the market that still uses an x86 CPU.

However there is one very common use case where you encounter an "x86 Android device": The Android Emulator.

As the PC running the emulator typically uses a x86 CPU emulators that run an x86 image (instead of an ARMv7 or ARMv8/ARM64 based image) can make use of the CPU integrated virtualization techniques which result in a much higher speed.

  • Right. ARM running over x86 through QEMU is usually very slow and doesn't support many syscalls. – Irfan Latif Feb 24 at 18:00
  • Thank you for explaining in detail. I would like to take an example. If I am right, be it a processor or a SoC, the term x86 is co-related with Intel and AMD. I would like to take an example. – user741975 Feb 25 at 19:24
  • I have gone through the link apkmirror.com/apk/mozilla/firefox/firefox-65-0-1-release for downloading Firefox android apk. I have seen two variants there; Firefox android apk for armeabi-v7a architecture and Firefox android apk for x86 architecture. My confusion started from there. – user741975 Feb 25 at 19:25
  • SoC of well-known android devices are Snapdragon, MediaTek, Exynos, Kirin etc. Therefore, I believe, I need to download android apk for ARM. Am I right? – user741975 Feb 25 at 19:25
  • @user741975 At the moment if you choose armeabi-v7a it will run with a chance larger than 99%. If you have a current mid-class or high-end device also arm64-v8a may be an option. Anyway you can just download it and try to install it. If the architecture is wrong installation will just fail. – Robert Feb 25 at 19:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.