首页 > 系统 > Android > 正文

Android armeabi的so库兼容问题

2019-11-06 10:04:20
字体:
来源:转载
供稿:网友

当前android手机各式各样,然后出现的问题有很多,当我们在某种手机上运行的时候还OK,不过去到另一只手机上在安装的时候就直接闪退。出现这种问题很小米,华为等等本身的配置不一样,然而就出现了也对其进行的一些适配。下面我们就说说android  armeabi的so库兼容问题吧!

Android 设备的CPU类型(通常称为”ABIs”)

armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。x86: 平板、模拟器用得比较多。x86_64: 64位的平板。

早期的Android系统几乎只支持ARMv5的CPU架构,你知道现在它支持多少种吗?7种!Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MipS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI。应用程序二进制接口(application Binary Interface)定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库。在Android系统上,每一个CPU架构对应一个ABI:armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64。

问题:

网上有人下载了几个渠道的微信apk安装包,打开发现里面的lib文件夹只有armeabi一个文件夹,没有x86和armeabi-v7a,以及64位arm处理器的arm64-v8a文件夹,所以感到很疑惑,它是怎么在64位arm处理器上运行的呢?因为一般都是我们的项目上接入某些第三方库都是有带很多个,这就奇怪了。

回答:arm64-v8a是可以向下兼容的,但前提是你的项目里面没有arm64-v8a的文件夹,如果你有两个文件夹armeabi和arm64-v8a,两个文件夹,armeabi里面有a.so 和 b.so,arm64-v8a里面只有a.so,那么arm64-v8a的手机在用到b的时候发现有arm64-v8a的文件夹,发现里面没有b.so,就报错了,所以这个时候删掉arm64-v8a文件夹,这个时候手机发现没有适配arm64-v8a,就会直接去找armeabi的so库,所以要么你别加arm64-v8a,要么armeabi里面有的so库,arm64-v8a里面也必须有。此问此答来源于知乎:https://www.zhihu.com/question/36893314/answer/78467097上文介绍有点简单,详细看:http://blog.csdn.net/ouyang_peng/article/details/51168072


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表