1.Android 设备的CPU类型

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

armeabi设备只兼容armeabi,不支持硬件辅助浮点运算,支持所有的 ARM* 设备;
armeabi-v7a设备兼容armeabi-v7a、armeabi;
arm64-v8a设备兼容arm64-v8a、armeabi-v7a、armeabi;
x86设备兼容x86、armeabi;
x86_64设备兼容x86_64、x86、armeabi;
mips64设备兼容mips64、mips;
mips只兼容mips;

2.Android设备如何加载.so文件

以arm64-v8a设备为例,该Android设备优先寻找libs目录下的arm64-v8a文件夹。如果有文件夹,但是没有so库,则会报错。如果没有arm64-v8a文件夹,则会去找armeabi-v7a文件夹。如果找不到armeabi-v7a文件夹,则寻找armeabi文件夹,兼容运行该文件夹下的so。

3.实际操作

由上兼容性可以看到不同设备基本都是可以兼容armeabi的so库,只是效率,性能上有问题。

反编译微信,里面只有armeabi这个文件夹,应该是在这个目录下放置其他架构的SO文件,再通过代码实现选择加载哪一个架构的SO文件。

使用armeabi的手机已经很少了,几乎忽略不计了。

为了减小 apk 体积,只保留 armeabi 和 armeabi-v7a 两个文件夹,并保证这两个文件夹中 .so 数量一致

对只提供 armeabi 版本的第三方 .so,原样复制一份到 armeabi-v7a 文件夹

关于android中的armeabi、armeabi-v7a、arm64-v8a及x86等相关推荐

  1. Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)

    默认情况下,Android和Flutter打包出来的Apk都是包含了所有架构的,这样打出来的apk体积相对于单架构的apk有点大. 这时,我们就需要分别打出不同的架构包. 架构 一般来说,x86代表3 ...

  2. Android NDK编译中在libs\armeabi中加入第三方so库文件的方法

    Android NDK编译中在libs\armeabi中加入第三方so库文件的方法 假设要加入库文件的名字为libffmpeg.so文件 1.要在project\jni目录下新建一目录prebuilt ...

  3. Android中libs目录下armeabi和armeabi-v7a的区别

    armeabi默认选项, 支持基于 ARM* v5TE 的设备 支持软浮点运算(不支持硬件辅助的浮点计算) 支持所有 ARM* 设备 armeabi-v7a 支持基于 ARM* v7 的设备 支持硬件 ...

  4. Android中处理崩溃异常

    2019独角兽企业重金招聘Python工程师标准>>> 大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象 ...

  5. Android中的ABI

    Android中的ABI ABI是Application Binary Interface的缩写. ABI常表示两个程序模块之间的接口,且其中一个模块常为机器码级别的library或操作系统. ABI ...

  6. 【Android 安装包优化】p7zip 源码交叉编译 Android 平台可执行程序 ( 下载 p7zip 源码 | 交叉编译 Android 中使用 7z 可执行程序 )

    文章目录 一.下载 p7zip 源码 二.交叉编译 Android 中使用 7z 可执行程序 三.参考资料 一.下载 p7zip 源码 下载 7zip 源码 , 下载页面 https://source ...

  7. Android中集成Jpush实现推送消息通知与根据别名指定推送附示例代码下载

    场景 经常会有后台服务向Android推送消息通知的情况. 实现 首先在Android Studio中新建一个Android应用 在Project根目录的build.gradle中配置了jcenter ...

  8. Android中处理崩溃异常 (转)

    大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了 ...

  9. Android中JNI的使用方法

    Android中JNI的使用方法 首先看一下Android平台的框架图: 可以看到Android上层的Application和ApplicationFramework都是使用Java编写, 底层包括系 ...

  10. (转)Android中JNI编程的那些事儿

    Android中JNI编程的那些事儿 首先说明,Android系统不允许一个纯粹使用C/C++的程序出现,它要求必须是通过Java代码嵌入Native C/C++--即通过JNI的方式来使用本地(Na ...

最新文章

  1. 计算机网络实验ip数据报转发,计算机网络实验报告三网际协议IP.doc
  2. python-数据类型
  3. MCMC笔记:MCMC的不足
  4. 聚簇索引、非聚簇索引、普通索引、唯一索引
  5. 8.Boost之unordered_set
  6. 嵌入式Linux操作系统移植IMX6开发板之实现USB 自动挂载
  7. 单片机串口通信与同步异步通信
  8. 拓扑链表c语言,数据结构2.2 链表的实现
  9. WAP 1.X, WAP 2.0
  10. 微信小程序自定义tabbar 图标凸出效果
  11. NetLimiter 4 Pro(网络控制软件)官方中文版V4.1.6.0 | netlimiter软件下载 | 电脑防火墙软件哪个好
  12. java中的正则matches方法和find方法的区别
  13. mac安装nodeBB时的坑
  14. 实现链表的插入——头插/尾插
  15. 华为任正非:实事求是的科研方向与二十年的艰苦努力
  16. Mybatis常用标签详解
  17. 李宏毅老师《机器学习》课程笔记-3卷积神经网络
  18. Django ORM查询之外键、关系的反向引用
  19. 机器人机械臂运动学——运动学正向解算
  20. 【分享】AlienWareM15R6键盘失灵

热门文章

  1. Pascal VOC Dataset 下载地址
  2. java 生成ai矢量图_AI利用自己的工具将位图转换为矢量图
  3. 网络安全笔记-DDoS攻击
  4. python实现密码破解
  5. 魅族mx4pro刷linux,魅族MX4 Pro刷recovery教程_魅族MX4 Pro第三方recovery下载
  6. python中颜色表_python 颜色表
  7. qt unicode转gbk_Qt中文编码和QString类Unicode编码转换
  8. 1.59TB《全球 12.5 米高程DEM for WeServer》发布
  9. php导出excel数据
  10. 淘宝网购物车jquery源码和网易新用户注册页面表单验证的练习