Android ABI
Posted CrazyApes
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android ABI相关的知识,希望对你有一定的参考价值。
android 成长在于积累和分享
ABI
ABI 是 Application Binary Interface 的缩写。
是应用程序二进制接口,描述了应用程序和操作系统之间,一个应用和它的库之间,或者应用的组成部分之间的低接口。
ABI涵盖了各种细节,如:
- 数据类型的大小、布局和对齐;
- 调用约定(控制着函数的参数如何传送以及如何接受返回值),例如,是所有的参数都通过栈传递,还是部分参数通过寄存器传递;哪个寄存器用于哪个函数参数;通过栈传递的第一个函数参数是最先push到栈上还是最后;
- 系统调用的编码和一个应用如何向操作系统进行系统调用;
- 以及在一个完整的操作系统ABI中,目标文件的二进制格式、程序库等等。
Android 支持的ABI
Android目前支持以下七种ABI:armeabi、armeabi-v7a、arm64-v8a、x86、x86_64、mips、mips64。
CPU | 支持的ABIs |
---|---|
ARMv5 | armeabi |
ARMv7 | armeabi-v7a >> armeabi |
ARMv8 (64位) | arm64-v8a >> armeabi-v7a >> armeabi |
x86 | x86 >> armeabi-v7a >> armeabi |
x86_64 | x86_64 >> x86 >> armeabi-v7a >> armeabi |
MIPS | mips |
MIPS64 | mips64 >> mips |
查看当前的ABI偏好
每种CPU架构都有其自己支持的ABIs。
可通过 Build.SUPPORTED_ABIS 得到根据偏好排序的设备支持的ABI列表。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
String[] ABIs = Build.SUPPORTED_ABIS;
for (String s : ABIs)
Log.i("ABIs", s);
else
String ABI = Build.CPU_ABI;
Log.i("ABI", "ABI : " + ABI);
========= print =========
I/ABIs: arm64-v8a
I/ABIs: armeabi-v7a
I/ABIs: armeabi
I/ABI: arm64-v8a
查看当前的CPU信息
- 使用adb查看
C:\\Users\\Apes>adb shell cat /proc/cpuinfo
Processor : AArch64 Processor rev 4 (aarch64) // AArch64是ARMv8 架构的一种执行状态
processor : 0
BogoMIPS : 38.40
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x801
CPU revision : 4
processor : 1
BogoMIPS : 38.40
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x801
CPU revision : 4
processor : 2
BogoMIPS : 38.40
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x801
CPU revision : 4
processor : 3
BogoMIPS : 38.40
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x801
CPU revision : 4
processor : 4
BogoMIPS : 38.40
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x800
CPU revision : 2
processor : 5
BogoMIPS : 38.40
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x800
CPU revision : 2
processor : 6
BogoMIPS : 38.40
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x800
CPU revision : 2
processor : 7
BogoMIPS : 38.40
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x800
CPU revision : 2
Hardware : Qualcomm Technologies, Inc SDM660
参考文献
Android中的ABI (https://blog.csdn.net/mandagod/article/details/88245287)
以上是关于Android ABI的主要内容,如果未能解决你的问题,请参考以下文章
平台 android NDK 不支持 ABI [armeabi, mips]
Qt mobile android build error with android ABI level 15,但适用于更高的 ABI
Android 逆向ELF 文件格式 ( ELF 文件当前版本号 | 操作系统 ABI 信息 | ABI 版本 | 文件头校验 | 文件头长度信息 )
Android 逆向ELF 文件格式 ( ELF 文件当前版本号 | 操作系统 ABI 信息 | ABI 版本 | 文件头校验 | 文件头长度信息 )