<h2>Basics</h2>

Applications that support armv7a and armv8a have *two sets* of machine code included: 

* One set for armv7a
* One set for armv8a

Your armv7a device can happily run the code that's intended for it, and which it can understand and run. It can't understand armv8a code at all, and is unable to run it. Applications that only support armv8a thus can't be run, so Android prevents you from installing them. 

<h2>Forthcoming Complexities</h2>
The ARMv9 architecture will start to appear in Android devices quite soon. The Qualcomm Snapdragon 8 Gen 1 was one of the first v9 chips announced, in November 2021. Most ARMv9 cores can't run armv7a code, because they don't implement any 32-bit instruction set. They *can* run armv8a code. This means that devices with ARMv9 processors:

* Can run apps that support armv7a and armv8a.
* Can't run apps that only support armv8a. 

It's a good thing that Google have been demanding that new and updated apps support 64-bit [since August 2019](https://developer.android.com/google/play/requirements/64-bit).