Android ABI

Android 成长在于积累和分享

ABI

ABI 是 Application Binary Interface 的缩写。
是应用程序二进制接口,描述了应用程序和操作系统之间,一个应用和它的库之间,或者应用的组成部分之间的低接口。

ABI涵盖了各种细节,如:

  • 数据类型的大小、布局和对齐;
  • 调用约定(控制着函数的参数如何传送以及如何接受返回值),例如,是所有的参数都通过栈传递,还是部分参数通过寄存器传递;哪个寄存器用于哪个函数参数;通过栈传递的第一个函数参数是最先push到栈上还是最后;
  • 系统调用的编码和一个应用如何向操作系统进行系统调用;
  • 以及在一个完整的操作系统ABI中,目标文件的二进制格式、程序库等等。

Android 支持的ABI

Android目前支持以下七种ABI:armeabiarmeabi-v7aarm64-v8ax86x86_64mipsmips64

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:UsersApes>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)

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>