2014-04-13 183 views
35

當我探索開放源代碼時,我多次看到這個庫(armeabi),並且我爲其定義了它,並且我找到了所有關於它的結果,而沒有定義它,I想知道這個armeabi是什麼,爲什麼他們在android應用程序中使用它。什麼是armeabi以及他們爲什麼使用它

回答

65

Android設備有CPU。其中許多CPU基於ARM架構,有些基於x86架構,還有一些基於MIPS等其他內核。

一些Android應用程序使用本地開發套件(NDK)創建C/C++代碼以鏈接到他們的應用程序。 C/C++代碼需要針對特定​​的CPU架構進行編譯。 NDK將爲每個體系結構編譯的C/C++代碼版本放入特定於體系結構的目錄中。其中一個目錄是armeabi/,用於通用ARM CPU。還有armeabi-v7/(對於ARM V7兼容CPU),x86/(對於x86處理器)等

9

ABI - 應用程序二進制接口

EABI - 嵌入式應用程序二進制接口

所以ARMEABI是編譯的二進制文件匹配你的android設備的CPU架構。

例如

arm64-V8A(的Nexus 5×) - 64 - ARM的Cortex-A35,ARM的Cortex-A53,ARM的Cortex-A57,ARM的Cortex-A72,ARM的Cortex-A73

armeabi-V7A - 32位 - ARM的Cortex-A5,ARM的Cortex-A7,ARM的Cortex-A8,ARM的Cortex-A9,ARM的Cortex-A12,ARM的Cortex-A15,ARM的Cortex-A17

enter image description here

要包括*。所以二進制jniLibs使用Android Studio 2.3將它們放在src/main/jniLibs文件夾中,並將以下配置添加到* .gradle文件中:

android { 
    sourceSets { 
     main { 
      jniLibs.srcDirs = ['src/main/jniLibs'] 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'jniLibs', include: ['*.so']) 
} 
相關問題