一. Android ABI
不同的 Android 设备使用不同的 CPU,而不同的 CPU 支持不同的指令集。CPU 与指令集的每种组合都有专属的应用二进制接口 Application Binary Interface ( ABI ),因此使用 NDK 生成在 Android 运行 .a 或 .so (都是二进制文件)就需要指定 ABI 。 目前 NDK 支持的 ABI 如下:
ABI | 支持的指令集 | CPU 架构 | 应用 |
---|---|---|---|
armeabi-v7a | armeabi 等 | ARM 32 位 | 手机 |
arm64-v8a | AArch64 等 | ARM 64 位 | 手机 |
x86 | x86 (IA-32) 等 | x86 32 位 | PC |
x86_64 | x86-64 等 | x86 64 位 | PC |
NDK 17 前支持 ARMv5 (armeabi) 以及 32 位和 64 位 MIPS,但 NDK r17 和 17 后不再支持。
1. 指定 ABI
Gradle
默认情况下,Gradle(无论是通过 Android Studio 使用,还是从命令行使用)会针对所有非弃用 ABI 进行构建。要限制应用支持的 ABI 集,可以使用 abiFilters。例如&