内容出自:http://blog.csdn.net/xx326664162/article/details/51167849
ABI和CPU的重要知識
1、 大部分cpu都支援多于一種的ABI。
2、 當一個應用安裝在裝置上,隻有該裝置支援的CPU架構對應的.so檔案會被安裝。
3、

注意:上表格中的空白部分,是我不知道它是否支援,極有可能是不支援
解析: x86裝置上,選擇ABI的優先級
libs/x86目錄中如果存在.so檔案的話,會被安裝
如果不存在,則會選擇armeabi-v7a中的.so檔案
如果也不存在,則選擇armeabi目錄中的.so檔案
x86裝置能夠很好的運作ARM類型函數庫,但并不保證100%不發生crash,特别是對舊裝置,因為是運作在x86裝置上模拟arm的虛拟層上。
4、 64位裝置(arm64-v8a, x86_64, mips64)能夠運作32位的函數庫,但是以32位模式運作,在64位平台上運作32位版本的ART和Android元件,将丢失專為64位優化過的性能(ART,webview,media等等)。
5、 最好是針對特定平台提供相應平台的二進制包,這種情況下運作時就少了一個模拟層(例如x86裝置上模拟arm的虛拟層),進而得到更好的性能(歸功于最近的架構更新,例如硬體fpu,更多的寄存器,更好的向量化等)。
6、 會安裝優先級較高的ABI目錄,則其它優先級較低的ABI目錄(包括其它module中的ABI目錄),都無法安裝。例如:在cpu是ARMv7架構的手機上,如果檢測到armeabi-v7a,就會選擇安裝armeabi-v7a,則armeabi下的檔案,都無法安裝了。
7、 相應的ABI二進制檔案,要放進相應的ABI目錄中
8、一般情況下不要簡單得修改架構目錄名
我們可以通過Build.SUPPORTED_ABIS得到根據偏好排序的裝置支援的ABI清單。但你不應該從你的應用程式中讀取它,因為Android包管理器安裝APK時,會自動選擇APK包中為對應系統ABI預編譯好的.so檔案,如果在對應的lib/ABI目錄中存在.so檔案的話。