ABI就是Application binary interface的意思,即应用程序二进制接口,定义了一套规则。允许编译好的二进制目标代码能在所有兼容该ABI的操作系统中无需改动就能运行。不同的Android手机使用不同的CPU,因此需要提供对应的二进制接口交互规则(即对应的ABI文件)才能进行交互。目前,有部分CPU是能支持多种交互规则,但这是在牺牲性能的前提下所做的兼容。
(kws-zy) cad-1@cad1-SYS-7048GR-TR:~$ adb devices
List of devices attached
emulator-5554 device(kws-zy) cad-1@cad1-SYS-7048GR-TR:~$ adb shell
generic:/ $ cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 1 (v7l)
BogoMIPS : 125.00
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x2
CPU part : 0xc0f
CPU revision : 1
Hardware : Dummy Virtual Machine
Revision : 0000
Serial : 0000000000000000
generic:/ $ generic:/ $ getprop ro.product.cpu.abi
armeabi-v7a
generic:/ $
(kws-zy) cad-1@cad1-SYS-7048GR-TR:~$ adb devices
List of devices attached
IFU8ROOR99999999 device(kws-zy) cad-1@cad1-SYS-7048GR-TR:~$ adb shell getprop ro.product.cpu.abi
arm64-v8a(kws-zy) cad-1@cad1-SYS-7048GR-TR:~$ adb shell cat /proc/cpuinfo
Processor : AArch64 Processor rev 2 (aarch64)
processor : 0
BogoMIPS : 26.00
Features : fp asimd aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: AArch64
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 2
Hardware : MT6750
在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库时会损失性能。
本文发布于:2024-01-28 03:41:49,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063845154525.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |