什么是armeabi,为什么要使用它?

76

当我探索开源项目时,我经常看到这个库(armeabi)。

我搜索了一下它的解释,但是我发现所有的结果都是在讨论它,而不是定义它。

armeabi是什么?为什么在Android应用程序中使用它?


这两个问题直接相关,而且它们与其他问题也有进一步的关联。 - cachius
3个回答

120

安卓设备拥有中央处理器(CPU)。其中许多CPU基于ARM架构,一些基于x86架构,还有少数基于其他架构,比如MIPS。

一些安卓应用程序使用本地开发工具包(NDK)创建C/C++代码以链接到其应用程序。C/C++代码需要针对特定的CPU架构进行编译。NDK将为每个架构编译的C/C++代码版本放置在特定于该架构的目录中。其中之一是armeabi/,用于通用ARM CPU。 还有 armeabi-v7/(用于 ARM v7 兼容的CPU),x86/(用于 x86 CPU)等。


52

ABI - 应用程序二进制接口

EABI - 嵌入式应用程序二进制接口

因此,ARMEABI是与您的Android设备CPU架构相匹配的编译二进制文件

例如:

arm64-v8a(Nexus 5x)- 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

输入图片说明

要在Android Studio 2.3中使用*.so二进制文件jniLibs,请将它们放置在src/main/jniLibs文件夹中,并将以下配置添加到您的*.gradle文件中:

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

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

18

我最近看到了一篇与不同CPU相关的文章,并提供了关于支持它们的同时保持APK大小的建议。该报告在结尾处提供了以下信息:

  • armeabi
  • armeabi-v7a
  • arm64-v8a
  • X86
  • X86-64
  • mips
  • mips64

1
由于链接可能会失效,请在文章中简要描述它们。 - Smart Manoj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接