2014-04-13 235 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']) 
} 
相关问题