Android CPU ABI

ABI 简述

不同 Android 手机使用不同的 CPU,因此支持不同的指令集。CPU 与指令集的每种组合都有其自己的应用二进制界面(或 ABI)。 ABI 可以非常精确地定义应用的机器代码在运行时如何与系统交互。 您必须为应用要使用的每个 CPU 架构指定 ABI。

典型的 ABI 包含以下信息:

  • 机器代码应使用的 CPU 指令集。
  • 运行时内存存储和加载的字节顺序。
  • 可执行二进制文件(例如程序和共享库)的格式,以及它们支持的内容类型。
  • 用于解析内容与系统之间数据的各种约定。这些约定包括对齐限制,以及系统如何使用堆栈和在调用函数时注册。
  • 运行时可用于机器代码的函数符号列表 - 通常来自非常具体的库集。

目前几种 Android CPU ABI

CPU 架构 描述
armeabi 第5代 ARM v5TE,使用软件浮点运算,兼容所有ARM设备,通用性强,速度慢
armeabi-v7a 第7代 ARM v7,使用硬件浮点运算,具有高级扩展功能
arm64-v8a 第8代,64位,包含AArch32、AArch64两个执行状态对应32、64bit
x86 intel 32位,一般用于平板
x86_64 intel 64位,一般用于平板
mips 少接触
mips64 少接触

设置 APK 的对应支持

defaultConfig {
    ndk {
        abiFilters "armeabi","armeabi-v7a","arm64-v8a","x86_64"
    }
}

如果你的工程包含 NDK 开发,一般为了压缩 APK 体积都会在 build.gradle 做如上设置以声明 APK 支持的 ABI 架构,其它没有被声明的 ABI 所对应的 .so 等库就不会被打包进 APK 中。

查看 CPU ABI

通常我们可以通过如下方式查看 CPU 支持的 ABI 架构:

通过 adb 命令查看

1.连接手机到电脑上
2.打开 cmd 命令窗口,输入命令 adb shell
3.然后输入命令 cat /proc/cpuinfo

通过代码获取

textView.setText("ABI:"+Build.CPU_ABI);

参考

ABI 管理

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,235评论 25 709
  • 记得《奇葩说》的有道辩题是“分手应不应该当面说?”,如果你对这段感情还抱有最大的尊重,那就好好相聚,好好告别,一定...
    唐放郧阅读 2,790评论 0 1
  • 随着企业品牌战的不断升级,专利侵权案件频发,版权大战日趋白热化。这使得知识产权在企业运营的分量越来越重。在这个互联...
    氢述阅读 2,915评论 0 1
  • 每日一图,随手抓题材,不用存货,只用黑白,禁止文字阐释。我不想@任何人,我自己挑战7天,有想和我一起挑战的可以自行...
    大鸟8wo阅读 3,570评论 7 18
  • 夜已深,又失眠了。不错的,是又。有没有一种人为黑夜而生,不然为何在夜里如此清醒,思绪飘飞。想法如同顽皮的孩子,在脑...
    一记耳光阅读 2,738评论 0 0

友情链接更多精彩内容