先来一波扫盲:
armeabi:针对普通的或旧的arm v5 cpu
armeabi-v7a:针对有浮点运算或高级扩展功能的arm v7 cpu(32位ARM设备)
arm64-v8a:64位ARM设备
Android L开始才真正支持32位和64位的ART虚拟机,配合上64位处理器,名正言顺的运行64位软件
兼容和文件读取顺序
arm64-v8a是可以向下兼容的,其下有armeabi-v7a,armeabi
armeabi-v7a向下兼容armeabi
对于一个cpu是arm64-v8a架构的手机,它运行app时,进入jnilibs去读取库文件时,先看有没有arm64-v8a文件夹:
如果没有该文件夹,去找armeabi-v7a文件夹,如果没有,再去找armeabi文件夹,如果连这个文件夹也没有,就抛出异常
如果有arm64-v8a文件夹,那么就去找特定名称的.so文件,注意:如果没有找到,不会再往下(armeabi-v7a文件夹)找了,而是直接抛出异常
本文详细介绍了Android中不同CPU架构(armeabi, armeabi-v7a, arm64-v8a)的兼容性和.so库文件的加载顺序。Android从L版本开始支持32位和64位ART虚拟机。当64位设备运行应用时,会优先查找arm64-v8a目录,若未找到则依次尝试armeabi-v7a和armeabi,找不到对应库会抛出异常。
6886

被折叠的 条评论
为什么被折叠?



