美文网首页
Android 多CPU架构支持相关知识

Android 多CPU架构支持相关知识

作者: Danny_yy | 来源:发表于2017-07-25 20:52 被阅读45次

    说到智能手机的性能好不好,我们通常最会想到的就是它的处理器(cpu),目前市场上最为常见的生产商有英伟达、高通、华为等。

    cpu主要由运算器、控制器、寄存器三部分组成,从字面意思看就是运算就是起着运算的作用,控制器就是负责发出cpu每条指令所需要的信息,寄存器就是保存运算或者指令的一些临时文件,这样可以保证更高的速度。

    cpu的功能基本:处理指令、执行操作、控制时间、处理数据

    • 打个比喻来说,cpu就像我们的大脑,帮我们完成各种各样的生理活动。所以对于电脑或者是手机而言,cpu就相当于它们的“大脑”。

    android支持的cpu架构(目前是七种)

    1. armeabi
    • 第5代 ARM v5TE,使用软件浮点运算,兼容所有ARM设备,通用性强,速度慢
    1. armeabi-v7a
    • 第7代 ARM v7,使用硬件浮点运算,具有高级扩展功能
    1. arm64-v8a
    • 第8代,64位,包含AArch32、AArch64两个执行状态对应32、64bit
    1. x86
    • intel 32位,一般用于平板
    1. x86_64
    • intel 64位,一般用于平板
    1. mips 少接触
    2. mips64 少接触

    从厂家上来分是有三种:arm、x86、MIPS


    arm 系列是绝大多数手机上使用的,x86 主要是运用在平板上,而 MIPS 基本上就没见过。

    从类型来分,有32位和64位,


    名字中没有64的就是32位的了。

    适配


    正常来说只使用 armeabi-v7a 就可以适配基本所有手机了,因为现在手机基本上都支持这种CPU架构。

    但是对于同时也能支持 arm64-v8a 的手机来说,性能上就不如使用对应 CPU 架构的快了,毕竟是32位和64位的区别。

    值得一提的是,arm 系列本身是没有64位,而是 intel 的x86_64先出现的,之后 arm 收购了 MIPS64,基于 MIPS64 改良出 arm64-v8a,所以也能理解为什么 MIPS 几乎没有。

    而另外,arm64-v8a 的 CPU 架构上也能运行 armeabi-v7a

    为什么呢?不是64位上运行32位,而是 arm64-v8a 上本身搭载了 armeabi-v7a,所以在 arm64-v8a 上运行 armeabi-v7a 是使用32位处理的,没毛病。

    如果应用中有不止一个 so,那就要注意了,如果这时你一个 so 同时支持了 armeabi-v7a 和arm64-v8a,而另一个 so 只支持了一种,那可能会运行有问题,这时要么另一个 so 也支持两种,要么把第一个 so 删掉对应目录,只支持相同的一种。

    在提供支持多个 CPU 架构的 SDK 时,可以同时提供多个目录的 so,虽然此时 SDK 相对较大,但是被编译的 so 还是以你在 gradle 里设置的支持的 ndk 为准:
    ndk {
    abiFilters ‘armeabi-v7a’ // , ‘arm64-v8a’, ‘x86’, ‘x86_64’
    }

    查看设备支持的 CPU 架构或者 APP 提供的 CPU 架构可以使用 Native Libs Monitor

    相关文章

      网友评论

          本文标题:Android 多CPU架构支持相关知识

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