Android 设备支持的7种CPU框架(ABIs)

名词解释

  • NDK:Native Development Kit
  • JNI:Java Native Interface
  • ABI: Application Binary Interface 应用二进制接口

1. ABI

应用程序二进制接口(application binary interface,ABI) 描述了应用程序操作系统之间,一个应用和它的库之间,或者应用的组成部分之间的底层接口。ABI不同于应用程序接口(API),API定义了源代码和库之间的接口,因此同样的代码可以在支持这个API的任何系统中编译,然而ABI允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行。

2. Android 设备支持7种CPU框架类型

Android 设备的CPU类型通常称为”ABIs”。
ARM是一种指令集,X86也是一种指令集。ARM是一种精简指令集(RISC),知识产权属于ARM公司;X86是一种复杂指令集(CISC),知识产权属于Intel公司。

CPU架构 位数 描述 性能
armeabi ARM v5 第5代、第6代的ARM处理器(早期的手机用的比较多) 使用软件浮点运算,兼容所有ARM设备,通用性强,速度慢(缺少对浮点数计算的硬件支持,在需要大量计算时有性能瓶颈 )
armeabiv-v7a 32位ARM设备 第7代及以上的 ARM 处理器(2011年15月以后的生产的大部分Android设备都使用它) 使用硬件浮点运算,具有高级扩展功能
arm64-v8a 64位ARM设备 第8代、64位ARM处理器(很少设备使用) 包含AArch32、AArch64两个执行状态对应32、64bit
x86 intel 32位 平板、模拟器用得比较多
x86_64 intel 64位 一般用于平板
mips 基本没见过(极少用于手机可以忽略 )
mips64 64位 基本没见过(极少用于手机可以忽略 )

对Android中arm64-v8a、armeabi-v7a、armeabi、x86认识
Android 设备的CPU类型(通常称为”ABIs”)、获取当前手机的ARM处理器类型

目前android支持如下7中CPU架构
Android 集成Chrome 浏览器内核 Crosswalk
android的cpu架构
armeabi、armeabi-v7a 和arm64-v8a区别
armeabi-v7a armeabi arm64-v8a 参数的含义解释

如何查看Android手机CPU类型、查看Android手机CPU类型是armeabi,armeabi-v7a,还是arm64-v8a、查看Android手机CPU类型

x86 架构的手机都会包含由 Intel 提供的称为 Houdini 的指令集动态转码工具,实现 对 arm .so 的兼容,再考虑 x86 只有1% 以下的市场占有率,x86 相关的两个 .so 也是可以忽略的

3. Android studio添加第三方库和so

4. Android如何加载So库

  • 程序对当前手机cpu架构(比如 armeabi-v7a)做了适配,那手机跑程序时候就直接在这个目录下找对应的so库,如果找不到就直接报错
  • 如果只对armeabi的手机cpu做适配,那么支持armeabi的手机都会去armeabi目录下找对应的so库

5. 查看Android设备的ABI

        String CPU_ABI = android.os.Build.CPU_ABI;//查看Android设备的ABI
        Log.d("ABI", "CPU_ABI = " + CPU_ABI);
//        Toast.makeText(this,CPU_ABI,Toast.LENGTH_SHORT).show();

ndk-关于abiFilters的使用
ndk在在代码中判断当前运行的ABI版本—C语言
NDK-abi-so

  • 查看手机支持的cpu架构和app适配的cpu架构
    下载App:Native Libs Monitor(豌豆荚上可以下载,现在已找不到)
  • 设置适配cpu架构:在app>build.gradle文件中android->defaultConfig 里设置支持 ndk
ndk { 
  abiFilters 'armeabi','armeabi-v7a', 'arm64-v8a' // 'x86', 'x86_64' 
}

6. 不同用户手机处理器下载不同版本

你可能感兴趣的:(Android 设备支持的7种CPU框架(ABIs))