Reputation: 1736
I am working on an Android App on Kivy. I am using Buildozer to compile an APK file.
In the Buildozer spec file, there's a setting android.arch = armeabi-v7a
, I didn't understand this.
Also, when I generated the APK file using the command buildozer -v android debug
and installed it using the command adb install bin/<appname>.apk
- it didn't Open on my Android Phone.
Upvotes: 130
Views: 401717
Reputation: 28532
To be clear, these are not instruction sets. They are ABIs, which compile into instruction sets. Most devices today are arm64-v8a
, the really cheap devices are armeabi-v7a
to save cost, and almost none are x86
or x86_64
.
e.g. The armeabi-v7a
ABI compiles to armeabi
, thumb-2
and VFPv3-D16
instruction set, but arm64-v8a
ABI compiles to AArch64
instruction set.
Each combination of CPU and instruction set has its own Application Binary Interface (ABI). An ABI includes the following information:
The CPU instruction set (and extensions) that can be used. The endianness of memory stores and loads at runtime. Android is always little-endian. Conventions for passing data between applications and the system, including alignment constraints, and how the system uses the stack and registers when it calls functions. The format of executable binaries, such as programs and shared libraries, and the types of content they support. Android always uses ELF. For more information, see ELF System V Application Binary Interface. How C++ names are mangled. For more information, see Generic/Itanium C++ ABI. source
Upvotes: 92