armeabi,armeabi-v7a,arm64- v8a的不同

目前android打包可以支持如下cpu架构

  • armeabi-v7a 第7代 ARM v7,使用硬件浮点运算,具有高级扩展功能(支持 armeabi 和 armeabi-v7a,目 前大部分手机都是这个架构)

  • arm64-v8a 第8代,64位,包含AArch32、AArch64两个执行状态对应32、64bit(支持 armeabi-v7a、 armeabi 和 arm64-v8a)

  • x86 intel 32位,少数的平板应用此架构(支持 armeabi(性能有所损耗) 和 x86)

  • x86_64 intel 64位,少数的平板应用此架构(支持 x86 和 x86_64)

    随着手机性能的越来越好,从armeabi->armeabi-v7a->armeabi-v8a更新
    在android打包出来的apk里面就包含这四种cpu平台。对于armeabi-v7a是arm32位的,这种支持着armeabi 和 armeabi-v7a。对于arm64-v8a是arm64位的,这种支持着支持 armeabi-v7a、 armeabi 和 arm64-v8a。
    目前市面上手机设备绝大多数都是arm架构,因此armv7a几乎能兼容所有设备。大多数应用只会打包armv7a 的so在Apk中。对于第三方服务,如百度地图、Bugly等会提供全平台的cpu架构。因此我们可以进行如下配 置,指定只打包armv7a到apk,从而减少apk大小,例如京东app,解压打开都是放到v7a中。
    但是上google play的话,目前只支持64位的了,另外看微信android app下载,默认下载的是64的,还有支持下载32位的,所以我们如果有需要可以分开打包。
    具体方法:productFlavor 或 splits

    此外:app在寻找so库时的原则是:

  • arm64-v8a手机,只放armeabi-v7a的app;在找so文件时,会发现没有arm64- v8a目录,那就会去找armeabi-v7a目录,(如果没有发现没有armeabi-v7a目录,就会去找armeabi目录)

  • armeabi-v7a手机,只放了arm64-v8a的app;在找so文件时,就会找不到对应的so库,所以只放v8a的,就会放弃掉32位的设备

  • 需要注意的是:如果你的app,arm64-v8a目录放了a.b so文件, armeabi-v7a目录放了c so文件,那c这个so文件就找不到了,因为发现有arm64-v8a目录后,就不会再去找32位的目录了

你可能感兴趣的:(android,android)