什么是Android ABI

举报
yd_221104950 发表于 2020/12/02 22:53:51 2020/12/02
【摘要】 什么ABI ABI就是Application binary interface的意思,即应用程序二进制接口,定义了一套规则。允许编译好的二进制目标代码能在所有兼容该ABI的操作系统中无需改动就能运行。不同的Android手机使用不同的CPU,因此需要提供对应的二进制接口交互规则(即对应的ABI文件)才能进行交互。目前,有部分CPU是能支持多种交互规则,但这是在牺牲性能...

什么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库时会损失性能。

谢谢阅读。

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/103498675

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。