俗语俗话 --- 什么是ABI API
API是应用程序编程接口,通俗讲就是应用程序之间定义的接口,暴露在外部提供调用的地址。
ABI是应用程序二进制接口,是应用程序和底层cpu之间定义的接口,就是指令集。
ABI(Application Binary Interface)
ABI 是 二进制层面的接口规范,它定义了:
CPU 指令集(如 ARMv8、x86_64)
函数调用约定(参数如何传递,返回值如何存储)
系统调用方式(如何与操作系统交互)
数据类型大小和对齐(如 int 是 4 字节)
异常处理机制(如 C++ 的异常如何传递)
在 Android 开发中的 ABI:Android 支持多种 CPU 架构,每种架构有自己的 ABI:
ABICPU 架构说明
armeabi-v7a
ARM 32-bit
旧版 ARM,支持浮点运算
arm64-v8a
ARM 64-bit
现代 ARM,性能更好
x86
Intel 32-bit
模拟器/旧设备使用
x86_64
Intel 64-bit
现代 x86 CPU
mips / mips64
MIPS 架构
已废弃
ABI 兼容性问题:
如果 App 只提供 arm64-v8a 库,则在 armeabi-v7a 设备上可能崩溃(除非启用兼容模式)。
NDK 编译时需指定目标 ABI(如 -DANDROID_ABI=arm64-v8a)。
API(Application Programming Interface)
API 是 源代码层面的接口规范,它定义了:
可调用的函数/方法(如 Activity.onCreate())
数据结构(如 Intent、Bundle)
协议/通信方式(如 REST API、gRPC)
编程语言绑定(如 Java/Kotlin 的 Android SDK)
在 Android 开发中的 API:
Android SDK API 级别(如 API 34 = Android 14)
不同版本提供不同的功能(如 API 21 引入 Material Design)。
Java/Kotlin 标准库 API(如 List、String)
NDK API(如 libc、OpenGL ES)
API 兼容性问题:
如果调用 API 28 的新方法,但在 API 21 设备上运行,会抛出 NoSuchMethodError。
通常用 @RequiresApi 或 Build.VERSION.SDK_INT 做版本检查。
