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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vscode 使用flake8和yapf[通俗易懂]

    vscode 使用flake8和yapf[通俗易懂]vscode使用flake8和yapf

    2022年9月12日
    0
  • windows lua_windows创建指定大小的文件

    windows lua_windows创建指定大小的文件首先我在D:\downloadSoftware\lua-5.3.5_Win64_bin目录下创建了一个hello.lua的文件,文件内容如图,是一个简单的lua程序。运行这个文件有两种方式。第一种:进入cmd命令行,然后进入源文件的目录下执行命令luachello.lua(后面的是文件名),可以看到当前目录下生成了一个文件hello.out,这是源文件编译好了,然后执行命令lua…

    2025年5月26日
    0
  • C++11新特性之线程操作

    C++11之前没有对并发编程提供语言级别的支持,这使得我们在编写可移植的并发程序时,存在诸多的不便。现在C++11增加了线程以及线程相关的类,很方便地支持了并发编程,使得编写的多线程程序的可移植性得到

    2021年12月28日
    39
  • interview-db[通俗易懂]

    interview-db[通俗易懂]1.索引作用和优缺点索引就一种特殊的查询表,数据库的搜索可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。2.什么字段适合建索引唯一性比较高,不为空,经常查询3.常见慢查询优化1.建索引2.减少表之间的关联3.优化sql,尽量让sq…

    2022年7月21日
    12
  • 关于radcontrols控件之Radupload「建议收藏」

    关于radcontrols控件之Radupload「建议收藏」Namespace:Telerik.Windows.ControlsAssembly:Telerik.Windows.Controls.Input(inTelerik.Windows.Controls.Input.dll)RadUpload是客户端和服务器端的一部分。在客户端执行完全在浏览器中使用Silverlight的平台。在服务器端需要处理的服务器进行处理的文件提交到客户端。检查在…

    2022年7月24日
    4
  • pycharm中十个常用的快捷键「建议收藏」

    pycharm中十个常用的快捷键「建议收藏」1、ctrl+shift+A:万能命令行2、shift两次:查看资源文件3、ctrl+D:复制当前光标所在行4、ctrl+R:快速替换(一般不用)5、ctrl+/:用于注释或取消注释6、shift+tab:取消缩进(tab:缩进)7、Alt+Shift+上下键:选中代码移动8、…

    2022年8月26日
    2

发表回复

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

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