What you have there is a 64-bit CPU running a 32-bit Android kernel. The kernel maintains /proc/cpuinfo
and reports on what it is using rather than what exists. The boot code of the device will have put the processor into 32-bit mode before starting Android.
The 32-bit OS can recognise 64-bit executables, because there are identifying numbers in the file header. It knows it can't run 64-bit executables, and tells you so. There are several kinds of mixed 32/64-bit Android:
- This one, with 64-bit hardware and a 32-bit Android. Devices like this were presumably produced to take advantage of new hardware before the vendor had finished updating their version of Android.
- 64-bit hardware and operating system, but 32-bit Android RunTime ("ART"). This setup will run 32-bit and 64-bit native code, but Java/Kotlin code runs in a 32-bit environment. I've encountered one device like this, a 2017 model of the Amazon Kindle Fire HD.
- 64-bit hardware and operating system, capable of running 32-bit and 64-bit native code, and with 64-bit ART. This has been common for several years as of 2023.