ABI(Application Binary Interface)實際就是指應用程序基于哪種指令集來進行編譯,我們能用到的ABI 也就四種 armeabi armeabi-v7a x86 和mips ,前兩者是最常見的。
其次這4個編譯選項的含義:
1.‘armeabi’ – 默認選項,將創(chuàng)建以基于 ARM* v5TE 的設備為目標的庫。 具有這種目標的浮點運算使用軟件浮點運算。 使用此 ABI 創(chuàng)建的二進制代碼將可以在所有 ARM* 設備上運行。
2.‘armeabi-v7a’ – 創(chuàng)建支持基于 ARM* v7 的設備的庫,并將使用硬件 FPU 指令。
3.‘x86’ – 生成的二進制代碼可支持包含基于硬件的浮點運算的 IA-32 指令集.
4.mips — 支持應用二進制接口
總結:
APP_ABI 賦值,就是為了交叉編譯生成相應芯片可執(zhí)行的指令集。
在jni目錄新建Application.mk 寫入: APP_ABI := armeabi armeabi-v7a mips x86 那么在你的android工程下邊的 libs 里邊會出現 armeabi armeabi-v7a mips x86 這四個目錄下會分別生成 4個.so文件。
程序在Android手機運行時,根據手機自身CPU芯片不同,去選擇調用相應的.so文件。需要注意的是選擇的平臺越多,so庫也越多,打包的apk體積也越大。
NdkDemo代碼已上傳至Github