Android ABI

Posted CrazyApes

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android ABI相关的知识,希望对你有一定的参考价值。

android 成长在于积累和分享

ABI

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

ABI涵盖了各种细节,如:

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

Android 支持的ABI

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

CPU支持的ABIs
ARMv5armeabi
ARMv7armeabi-v7a >> armeabi
ARMv8 (64位)arm64-v8a >> armeabi-v7a >> armeabi
x86x86 >> armeabi-v7a >> armeabi
x86_64x86_64 >> x86 >> armeabi-v7a >> armeabi
MIPSmips
MIPS64mips64 >> 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]

Android内核源码Abi目录学习笔记

Qt mobile android build error with android ABI level 15,但适用于更高的 ABI

Android 逆向ELF 文件格式 ( ELF 文件当前版本号 | 操作系统 ABI 信息 | ABI 版本 | 文件头校验 | 文件头长度信息 )

Android 逆向ELF 文件格式 ( ELF 文件当前版本号 | 操作系统 ABI 信息 | ABI 版本 | 文件头校验 | 文件头长度信息 )

Android ABI