当前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

更多相关文章

  1. Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
  2. 安卓源码框架学习-framework层
  3. 开放的安卓系统遇上了麻烦
  4. 210开发板Android系统串口程序
  5. 谷歌Android(安卓)艰难前行
  6. [置顶] android浮动搜索框的使用
  7. Android(安卓)Q Beta登场,新特性抢先看!
  8. Android应用获取root权限,修改系统文件
  9. Android实现系统级屏幕录制(下)

随机推荐

  1. android 中一个工程引用另一个工程
  2. Android内存阀值修改--内存回收机制配置
  3. android listview局部刷新和模拟应用下载
  4. Google宣布Android暂停开源
  5. Android(安卓)多线程-----AsyncTask详解
  6. Android用户近60%仍使用2.3版本 4.0版本
  7. android设备你所应该知道的Android设计
  8. Android(安卓)Studio下Java Jni技术
  9. 谷歌使用AndroidX代替Android支持库
  10. 【Android的从零单排开发日记】之入门篇(