美文网首页
Android cpu架构兼容so库问题

Android cpu架构兼容so库问题

作者: 小风小雨 | 来源:发表于2018-01-30 18:17 被阅读0次

1. Android 目前支持的7中cpu类型

设备类型 支持so库 说明
ARMv5 设备 只支持armeabi 早期
ARMv7 设备 支持 armeabi 和 armeabi-v7a 从2010年起
ARMv8 设备 支持 armeabi-v7a、armeabi 和 arm64-v8a 2014年起
X86 设备 支持 armeabi(性能有所损耗) 和 x86 主要是运用在平板上
x86_64 设备 支持 x86 和 x86_64、armeabi 主要是运用在平板上
mips 设备 支持 mips 较少
mips_64 设备 支持 mips 和 mips_64 较少

2. CPU架构简介

CPU架构 简介 说明
armeabi ARM架构的默认选项,支持软浮点运算,但不支持硬件辅助浮点运算,支持所有的 ARM* 设备,目前只支持该armeabi的机型极少。 缺点:不支持硬件浮点,性能较差。优点:兼容所有机型(建议接入第三方sdk,支持该so文件)
armeabi-v7a armeabi-v7a 向下兼容,在兼容 armeabi 的基础上,支持基于 ARM* v7 的设备,支持硬件 FPU 指令,支持硬件浮点运算,目前大部分机器都属于armeabi-v7a 目前市面机型较多,且兼容和性能综合性最好(建议接入第三方sdk,必须支持该so文件)
arm64-v8a 向下兼容支持 armeabi-v7a、armeabi 和 arm64-v8a 向下兼容armeabi-v7a、armeabi 和 arm64-v8a。(接入第三方sdk,支持该so文件最好)
X86 向下兼容支持 armeabi(性能有所损耗) 和 x86 PC,平板领域,兼容armeabi,无x86的so文件,兼容armeabi性能有所损耗
x86_64 向下兼容支持 x86 和 x86_64、armeabi Pc,平板领域
mips 支持 mips 高性能的嵌入式CPU构架,其出发点是高性能,主要用于路由器、猫等
mips_64 支持 mips 和 mips_64 高性能的嵌入式CPU构架,其出发点是高性能,主要用于路由器、猫等

3. Android中设备加载so策略

  1. 不同CPU架构的android手机加载时会在libs下找自己对应的目录,从对应的目录下寻找需要的.so文件;

  2. 如果没有对应的目录,就会去armeabi下去寻找,如果已经有对应的目录,却没有找到对应的.so文件,也不会去armeabi下去寻找了(这种情况会抛异常);

以armeabi-v7a设备为例,该Android设备当然优先寻找libs目录下的armeabi-v7a文件夹,同样,如果只有armeabi-v7a文件夹而没有 so也是会报错的;如果找不到armeabi-v7a文件夹,则寻找armeabi文件夹,兼容运行该文件夹下的so,但是不能兼容运行x86的so。所以项目中如果只含有x86的so,在armeabi和armeabi-v7a也是无法运行的。以上就是不同CPU架构运行时加载so的策略。

4. Android设备So兼容方案

方案编号 方案 gradle配置 优缺点 App举例
N01 只适配 armeabi-v7a ndk { abiFilters 'armeabi-v7a' } 因为目前主流机型是 ARMv7,并且 ARMv8 设备也向下兼容了armeabi-v7a Facebook、WhatsApp、王者荣耀等
N02 只适配 armeabi ndk { abiFilters 'armeabi' } 因为 ARMv7 、ARMv8 还是 x86 都兼容 armeabi,但是性能都会有些损耗 微信
N03 同时适配 armeabi-v7a 和 armeabi ndk { abiFilters 'armeabi-v7a' , ‘armabi'} 既能够支持所有 ARM 架构,同时又能具有 ARMv7 支持硬件浮点运算等特性 Line
N04 同时适配 x86 和 armeabi ndk { abiFilters 'armeabi' , ‘x86’} 既能支持所有 ARM 架构,又能支持x86架构,唯一的缺点就是没有了ARMv7 支持硬件浮点运算等一系列特性 QQ
N05 同时适配 armeabi, armeabi-v7a 和 x86 ndk { abiFilters 'armeabi' , ‘x86’, 'armeabi-v7a' } 在性能方面来说是较为完美的方案,只是APK的大小也会随之的变大 ...

5.gradle配置ndk配置

image.png
文章内容来源:
1.Android CPU架构及so库兼容问题总结
2. Android SO文件的兼容和适配
感谢原作者额分享。。。

其他分享:kotlin入门实例

相关文章

  • Android cpu架构兼容so库问题

    1. Android 目前支持的7中cpu类型 2. CPU架构简介 3. Android中设备加载so策略 不同...

  • Android CPU架构及so库兼容问题总结

    CPU架构分类 armeabi armeabi-v7a(目前大部分机器) arm64-v8a (高端机型) x86...

  • Android cpu架构与so兼容分析

    1 adb查看不同机型的CPU信息 以下是OPPO reno对应的cpu信息: 其中processor: 表示第几...

  • android ndk 开发2

    前言 看android ndk 1 版本。 生成so库 先配置你需要生成的CPU架构,在build.gradle中...

  • so库动态加载方案

    1.so文件 一种CPU架构 = 一种对应的ABI参数 = 一种对应类型的SO库 早期的Android系统几乎只支...

  • Android so 文件

    要点 不同的 CPU 架构需要不同的 so 文件 NDK平台不是后向兼容的,而是前向兼容的。 ABI 的概念,每...

  • Android xxxxx.so not found

    Android 项目运行时报错xxxx.so not found的错误,查询网上资料,说是.so文件cpu架构的问...

  • Android CPU架构兼容解密

    近期遇到一个so包兼容的问题,困扰了2天,今天终于得到解决,记录一下。 需要了解的知识: Android系统目前支...

  • Android 中arm64-v8a、armeabi-v7a、a

    前几天在做ndk这块 会编译so到指定目录下 但是不太清楚 so库对应的文件夹是兼容哪些CPU的 今天来简单整理一...

  • Android 的7种CPU架构

    目前android支持如下7中CPU架构: armeabi 第5代 ARM v5TE,使用软件浮点运算,兼容所有A...

网友评论

      本文标题:Android cpu架构兼容so库问题

      本文链接:https://www.haomeiwen.com/subject/fpiczxtx.html