什么是 armeabi 以及他们为什么使用它?

Posted

技术标签:

【中文标题】什么是 armeabi 以及他们为什么使用它?【英文标题】:What is armeabi and why they use it? 【发布时间】:2014-05-27 08:31:40 【问题描述】:

我在探索开源时多次看到这个库 (armeabi)。

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

这个 armeabi 是什么?他们为什么在 android 应用程序中使用它?

【问题讨论】:

【参考方案1】:

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 CPU)等

【讨论】:

【参考方案2】:

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'])

【讨论】:

【参考方案3】:

我最近确实看到了一个相当不错的article,它与不同的 CPU 相关,以及关于如何在支持 APK 大小的同时保持它们的建议。该文章提供了以下信息:

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

【讨论】:

从文章中对它们进行简要描述,因为链接会腐烂

以上是关于什么是 armeabi 以及他们为什么使用它?的主要内容,如果未能解决你的问题,请参考以下文章

我们为什么要把Dagger2,MVP以及Rxjava引入项目中?

API是什么以及它为什么重要

'armeabi'是32位还是64位?

android中libs目录下armeabi和armeabi-v7a的区别

为什么你不会用 ChatGPT 赚钱(由 ChatGPT 撰写)?

android中libs目录下armeabi和armeabi-v7a的区别