当我探索开源项目时,我经常看到这个库(armeabi)。
我搜索了一下它的解释,但是我发现所有的结果都是在讨论它,而不是定义它。
armeabi是什么?为什么在Android应用程序中使用它?
当我探索开源项目时,我经常看到这个库(armeabi)。
我搜索了一下它的解释,但是我发现所有的结果都是在讨论它,而不是定义它。
armeabi是什么?为什么在Android应用程序中使用它?
安卓设备拥有中央处理器(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)等。
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'])
}
我最近看到了一篇与不同CPU相关的文章,并提供了关于支持它们的同时保持APK大小的建议。该报告在结尾处提供了以下信息: