Android Studio gardle 配置 ndk 指定 ABI: abiFilters 详解

Android Studio gardle 配置 ndk 指定 ABI: abiFilters 详解一、ABI是什么ABI是ApplicationBinaryInterface的缩写。不同Android手机使用不同的CPU,因此支持不同的指令集。CPU与指令集的每种组合都有其自己的应用二进制界面(或ABI)。ABI可以非常精确地定义应用的机器代码在运行时如何与系统交互。您必须为应用要使用的每个CPU架构指定ABI。典型的ABI包含以下信息:机…

大家好,又见面了,我是你们的朋友全栈君。

一、ABI 是什么

ABI 是 Application Binary Interface 的缩写。

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

典型的 ABI 包含以下信息:

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

 

二、如何在 gardle 中配置

默认情况下,cmake 会输出 4 种 ABI(”armeabi-v7a” , “arm64-v8a”, “x86”, “x86_64″),如下所示:

Android Studio gardle 配置 ndk 指定 ABI: abiFilters 详解

我们也可以通过 abiFilters 来指定我们需要的 ABI:

Android Studio gardle 配置 ndk 指定 ABI: abiFilters 详解

abiFilters “armeabi”, “armeabi-v7a” , “arm64-v8a”, “x86”, “x86_64”, “mips”, “mips64”

 

三、支持的 ABI 详解

ABI 支持的指令集 说明
armeabi
  • ARMV5TE 和更高版本
  • Thumb-1
无硬浮点。
armeabi-v7a
  • armeabi
  • Thumb-2
  • VFPv3-D16
  • 其他(可选)
与 ARMv5、v6 设备不兼容。
arm64-v8a
  • AArch-64
 
x86
  • x86 (IA-32)
  • MMX
  • SSE/2/3
  • SSSE3
不支持 MOVBE 或 SSE4。
x86_64
  • x86-64
  • MMX
  • SSE/2/3
  • SSSE3
  • SSE4.1、4.2
  • POPCNT
 
mips
  • MIPS32r1 及更高版本
使用硬浮点,并且假设 CPU:FPU 时钟比率为 2:1 以获取最大兼容性。 不提供 micromips 或 MIPS16。
mips64
  • MIPS64r6
 

参考:https://developer.android.com/ndk/guides/abis

其它:

​NDK 学习系列:Android NDK 从入门到精通(汇总篇)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143147.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • XXE详解

    XXE详解xxe漏洞的学习与利用总结前言对于xxe漏洞的认识一直都不是很清楚,而在我为期不长的挖洞生涯中也没有遇到过,所以就想着总结一下,撰写此文以作为记录,加深自己对xxe漏洞的认识。xml基础知识要了解xxe漏洞,那么一定得先明白基础知识,了解xml文档的基础组成。XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许…

    2022年5月10日
    55
  • Java如何快速入门?

    Java如何快速入门?转自:微点阅读https://www.weidianyuedu.com一、掌握静态方法和属性静态方法和属性用于描述某一类对象群体的特征,而不是单个对象的特征。Java中大量应用了静态方法和属性,这是一个通常的技巧。但是这种技巧在很多语言中不被频繁地使用。理解静态方法和属性对于理解类与对象的关系是十分有帮助的,在大量的Java规范中,静态方法和属性被频繁使用。因此学习者应该理解静态方法和属性。Java在方法和属性的调用上是一致的,区别只表现在声明的时候,这和c++是不同的。二、重视接口..

    2022年6月1日
    33
  • python贪吃蛇代码「建议收藏」

    python贪吃蛇代码「建议收藏」语言:python外置组建:pygamepython是一款十分简单的语言,功能也十分巨大它也能实现贪吃蛇。游戏过程:废话不多说我们来看代码:#0.imortxxxximportpygame#pygame游戏库,sys操控python运行的环境importpygame,sys,random#这个模块包含所有pygame所使用的常亮frompygame.localsimport*#1,定义颜色变量#0-2550黑色255白色red

    2022年8月11日
    6
  • idea没有生成target文件夹_整体打包项目

    idea没有生成target文件夹_整体打包项目**问题**:打包的文件夹不知道怎么了被我不小心点到设置不显示了,只有src目录但是进入项目的文件夹路径下查看确又是存在的解决:如下图,把showExcludedFiles给勾选上…

    2022年9月1日
    3
  • Nas性能测试工具-vdbench

    Nas性能测试工具-vdbench版本:vdbench50406简介:vdbench是一个I/O工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能。它是一个免费的工具,容易使用,而且常常用于测试和基准测试。配置参数:大文件设置深度为2,广度为10,每个文件夹下的文件数量为400,每个文件的大小为10M,采用10个线程并发,顺序选择文件,随机读写,DirectIO的形式处理1M的数据 …

    2022年5月12日
    288
  • JavaScript工作原理(八):Service Workers,生命周期和应用案例

    JavaScript工作原理(八):Service Workers,生命周期和应用案例

    2021年5月27日
    121

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号