android支持的cpu架構(目前是七種)
armeabi 第5代 ARM v5TE,使用軟件浮點運算,兼容所有ARM設備,通用性強,速度慢
armeabi-v7a 第7代 ARM v7,使用硬件浮點運算,具有高級擴展功能
arm64-v8a 第8代,64位,包含AArch32、AArch64兩個執行狀態對應32、64bit
x86 intel 32位,一般用於平板
x86_64 intel 64位,一般用於平板
mips 少接觸
mips64 少接觸
在 apk 文件中帶這么多版本的 .so 是一種很不經濟的做法:
mips / mips64: 極少用於手機可以忽略
x86 / x86_64: x86 架構的手機都會包含由 Intel 提供的稱為 Houdini 的指令集動態轉碼工具,實現 對 arm .so 的兼容,再考慮 x86 1% 以下的市場占有率,x86 相關的兩個 .so 也是可以忽略的
armeabi: ARM v5 這是相當老舊的一個版本,缺少對浮點數計算的硬件支持,在需要大量計算時有性能瓶頸
armeabi-v7a: ARM v7 目前主流版本
arm64-v8a: 64位支持
這樣我們就可以明確 mips, mips64, x86, x86_64 這 4 個 .so 我們是不需要的。
撇開上面曲折離奇的故事,放置 .so 文件的正確姿勢其實就兩句話:
為了減小 apk 體積,只保留 armeabi 和 armeabi-v7a 兩個文件夾,並保證這兩個文件夾中 .so 數量一致
對只提供 armeabi 版本的第三方 .so,原樣復制一份到 armeabi-v7a 文件夾