天天看點

Android中的armeabi等如何适配Android目前支援以下7種ABIs大廠如何适配的各種cpu架構市場占有率适配方案

文章目錄

  • Android目前支援以下7種ABIs
  • 大廠如何适配的
  • 各種cpu架構市場占有率
  • 适配方案

Android目前支援以下7種ABIs

mips, mips64, X86, X86–64, arm64-v8a, armeabi, armeabi-v7a
           

abifilters 為我們提供了選擇适配指定CPU架構的能力,隻需要在app下的 build.gradle添加如下配置:

android {
        defaultConfig {
            ndk {
                abiFilters 'arm64-v8a', 'x86_64'
            }
        }
}
           

大廠如何适配的

預設情況下,為了使APP有更好的相容性,我們使用 Android Studio 或者指令打包時,會預設支援所有的架構,但相應的APK size 會瘋狂的增大,那麼大廠是如何适配的?

微信适配的是

arm64-v8a

(微信應該是最近才适配到

arm64-v8a

,以前是

armeabi

),支付寶和手Q适配的是

armwabi

,淘寶适配的是

armwabi-v7a

。各個APP适配的平台不太一樣,但是他們有一個共同點,那就是它們隻指定了一個平台

各種cpu架構市場占有率

Android 7種CPU架構在目前市場的占有率:

  • arm64-v8a

    : 目前主流版本
  • armeabi-v7a

    : 一些老舊的手機
  • x86

    /

    x86_64

    :

    x86

    架構的手機都會包含由 Intel 提供的稱為 Houdini 的指令集動态轉碼工具,實作對 arm .so 的相容,再考慮

    x86

    1% 以下的市場占有率,x86 相關的兩個 .so 也是可以忽略的
  • armeabi

    /

    mips

    /

    mips64

    : NDK 以前支援 ARMv5 (armeabi) 以及 32 位和 64 位 MIPS,但 NDK r17 已不再支援,極少用于手機可以忽。

目前手機市場上,

x86 / x86_64/armeabi/mips / mips6

的架構,基本可以不不考慮了,它們的占有量應很少很少了,

arm64-v8a

作為最新一代架構,應該是目前的主流,

armeabi-v7a

隻存在少部分老舊手機

适配方案

我們項目中該如何适配呢?

  • 隻适配

    armeabi

    的APP可以跑在

    armeabi

    ,

    x86

    ,

    x86_64

    ,

    armwabi-v7a

    ,

    arm64-v8

  • 隻适配

    armwabi-v7a

    可以運作在

    armwabi-v7a

    arm64-v8a

  • 隻适配

    arm64-v8a

    可以運作在

    arm64-v8a

是以給出如下幾個方案:

方案一:隻适配armeabi

優點:基本上适配了全部CPU架構(除了淘汰的mips和mips_64)

缺點:性能低,相當于在絕大多數手機上都是需要輔助ABI或動态轉碼來相容

方案二:隻适配 armwabi-v7a

同理方案一,隻是又篩掉了一部分老舊裝置,在性能和相容二者中比較平衡

方案三: 隻适配 arm64-v8

優點: 性能最佳

缺點: 隻能運作在arm64-v8上,要放棄部分老舊裝置使用者

這三種方案都是可以的,現在的大廠APP适配中,這三種都有,大部分是前2種方案。具體選哪一種就看自己的考量了,以性能換相容就

arm64-v8

,以相容換性能

armeabi

,二者稍微平衡一點的就

armwabi-v7a

目前來說,大多數的大廠APP用的都是

armeabi

armwabi-v7a

,隻有像微信這種牛逼的APP,為了追求性能和使用者體驗,放棄了少部分裝置

參考文章:為何大廠APP如微信、支付寶、淘寶、手Q等隻适配了armeabi-v7a/armeabi?