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

问题描述 投票:0回答:3

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

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

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

android shared-libraries
3个回答
122
投票

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


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

enter image description here

要使用 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大小的建议。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.