什么是Android ABI
什么ABI
ABI就是Application binary interface的意思,即应用程序二进制接口,定义了一套规则。允许编译好的二进制目标代码能在所有兼容该ABI的操作系统中无需改动就能运行。不同的Android手机使用不同的CPU,因此需要提供对应的二进制接口交互规则(即对应的ABI文件)才能进行交互。目前,有部分CPU是能支持多种交互规则,但这是在牺牲性能的前提下所做的兼容。
ABI架构
API架构 | 说明 |
---|---|
armeabiv-v7a | 第7代及以上的 ARM 处理器。目前,大部分手机的CPU都支持此ABI交互规则 |
arm64-v8a | 第8代64位ARM处理器,支持此ABI的手机还比较少 |
armeabi | 第5代、第6代的ARM处理器,早期手机用得较多 |
x86 | 平板、模拟器用得比较多 |
x86_64 | 64位的平板 |
ABI与CPU的联系
在Android手机上安装一个应用时,只有手机CPU架构支持的ABI架构对应的.so文件会被安装。如果支持多个ABI架构,会按照优先级进行安装。
CPU架构 | 支持的ABI架构对应的.so文件安装优先级 |
---|---|
ARMv5 | armeabi |
ARMv7 | armeabi,armeabi-v7a |
ARMv8 | armeabi,armeabi-v7a,arm64-v8a |
MIPS | mips |
MIPS64 | mips,mips64 |
x86 | x86,armeabi,armeabi-v7a |
x86_64 | :armeabi,x86,x86_64 |
CPU大都是向前兼容的,但是会按优先级来选择ABI。如x86架构的CPU会优先选择x86目录下的.so包,当不存在时,才会选择armeabi-v7a目录下的.so包,如果仍然不存在,最后才会选择armeabi目录下的.so文件。
注:x86设备运行armeabi下的so库时会损失性能。
谢谢阅读。
什么是Android ABI相关推荐
- Android ABI
2019独角兽企业重金招聘Python工程师标准>>> 获取当前ABI var supportsABIs:Array<String>? = null if(Build.V ...
- Android Studio 导入 so 简明教程:通过一个示例让你理解整个过程
Introduction 如果你是一名 C/C++ 开发人员,正在尝试将 C/C++ 的代码往安卓上迁移,那么这篇文章对你有很大的帮助 如果你是一名 Android 开发人员,正在尝试将外部 so 嵌 ...
- Android 4.0 源代码结构
Android源码的第一级目录结构 Android/abi (abi相关代码.ABI:application binary interface,应用程序二进制接口) Android/bionic(bi ...
- WebRTC android 端支持H264编解码
一.WebRTC源码中默认使用的H264编解码的库 1.WebRTC源码的video_coding模块中,包含了H264编解码相关的类 打开画红线的两个头文件,分别可以看到解码类中导入了ffmpeg的 ...
- 深入分析Android 9.0源代码——Activity启动流程
引言 点击此处查看<深入分析Android 9.0源代码>系列的组织结构和相关说明. 1 应用进程发起启动请求 本章的调用流程如下图所示: (Context) Activity Instr ...
- Android源代码分析之类方法与组件名词解释(持续更新)
Android源代码分析方法组件详解 1. 类方法 1.1 Handler方法 1.2 Looper方法 1.3 Binder 1.4 Instrumentation 2. 组件 2.1 AMS.WM ...
- Android Applicaion组件创建的源代码(Android 9,含代码注释)
Android Applicaion组件创建的源代码 1. 序列图 1.1 简化版序列图 1.2 完整版序列图 2. Application创建过程源代码 2.1 ActivityThread初始化 ...
- Android Applicaion组件创建的源代码分析(Android 9,含序列图)
Application组件源代码分析 1. Applicaion启动流程源代码分析 2. 启动过程中应用进程.系统服务进程通信的分界点 3. 组件生命周期与系统服务的关系 4. Application ...
- c++ vector 赋值_C++中vector用法
vector是什么 vector是C++标准模板库(STL-Standard Template Library)中的概念内容,它是一个能够操作多种数据结构和算法的模板类和函数库,是一个封装了动态大小数 ...
最新文章
- 系统架构性能问题诊断及优化思路,纯干货!
- easyUI清除序号
- sql server 2008手工修改表结构,表不能保存的问题与解决
- 【题解】CF#611 H-New Year and Forgotten Tree
- 演练 看不见的硬币 1002
- NeurIPS2021 港大腾讯AI Lab牛津提出:CARE,让CNN和Transformer能在对比学习中“互帮互助”!...
- orchard文档之-搜索和索引
- MFC避免窗口闪烁的方法(OnEraseBkgnd) .
- 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
- php中控车牌识别push协议,2、实时车牌识别上传及返回
- 机器人动力学方程——拉格朗日法
- eclipse 工具翻译插件安装
- 一幅长文细学华为MRS大数据开发(一)——大数据时代的挑战和机遇
- 光学系统像差的计算机模拟,XCCHJJ-B 光学系统像差传函焦距测量综合实验装置
- 最大数字 题解 (删除k个数字----贪心)
- Linux 自签名ssl证书生成
- 视频剖析-Video Timing
- 要报销的发票如何批量下载打印
- 新的 ES2022 规范终于发布了,我总结了8个实用的新功能
- 视频教程-大型ERP实战项目教程-Java