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


相关推荐

  • app抓包分析sign

    app抓包分析sign介绍:简单的app抓包分析sign一:准备工具jeborjadxorgdaandsoon首先抓包:点击登录抓取包:可以看见,这里直接抓到账户密码。我们可以通过DDMS查看日志信息:通过添加筛选,可以直接看到信息。我们在看看代码逻辑:对比一下,可以看到,是一样的,说明就是将一串密钥+我们的data数据,然后进行MD5加密得到的sign。后面的代码:应该是在做编码,这里得到正确的结果,就不用看他了。如果结果不正确,可以分析下这个代码的是在干什么,你也可以自己分

    2022年5月9日
    47
  • 贪吃蛇c加加代码_c语言贪吃蛇代码

    贪吃蛇c加加代码_c语言贪吃蛇代码展开全部基本e69da5e6ba903231313335323631343130323136353331333366306462思路:蛇每吃一个食物蛇身子就增加一格,用UP,DOWN,LEFT,RIGHT控制蛇头的运动,而蛇身子跟着蛇头走,每后一格蛇身子下一步走到上一格蛇身子的位置,以此类推。#include#include#include#defineBEG_X2#defineB…

    2022年5月26日
    55
  • 20那天android得知

    20那天android得知

    2022年1月14日
    51
  • windows下github 出现Permission denied (publickey).解决方法

    windows下github 出现Permission denied (publickey).解决方法

    2021年10月12日
    75
  • Pycharm修改字体大小「建议收藏」

    Pycharm修改字体大小「建议收藏」点击settings点击Editor点击Font修改Size和linespacing

    2022年8月25日
    7
  • 激光slam综述_激光点云处理

    激光slam综述_激光点云处理1:SLAM是什么SLAM是同步定位与地图构建(SimultaneousLocalizationAndMapping)的缩写,最早由HughDurrant-Whyte和JohnJ.Leonard提出。SLAM主要用于解决移动机器人在未知环境中运行时定位导航与地图构建的问题。SLAM通常包括如下几个部分,特征提取,数据关联,状态估计,状态更新以及特征更新等。其中包括2D-SLAM和3D-SLAM。一下大概分为三种形式:Localization:在给定地图的情况下,估计机器人的位姿。SLA

    2022年8月23日
    8

发表回复

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

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