Android NDK - 哪些android架构包含在Application.mk中?

时间:2014-11-05 11:36:32

标签: android android-ndk

我最近开始玩NDK,希望将我的lib转换为Android。我的问题是每个架构的二进制文件的数量比成功的 ndk-build 之后的二进制文件的数量要多 我的NDK版本是 r10c 并构建一个简单的应用程序(可执行文件),如下所示:

#include "stdio.h"
int main() {
   printf("hello from Windows Mr. Android!!");
   return 0;
}

/ libs 文件夹中的二进制文件创建 7 架构文件夹,其中包括:

  • arm64-V8A
  • armeabi
  • armeabi-V7A
  • MIPS
  • MIPS64
  • 86
  • x86_64的

二进制文件的平均值为6到10 KB,但总共约为64 KB(磁盘大小)。

我的问题是我开发了一个跨平台引擎(Windows,Linux和OSX)并且使用静态链接我的大小约为 2.5MB < em>支持每个平台。我不知道Android二进制格式(ELF?)但我会假设它将以大约相同的大小结束。

这意味着如果我成功将我的库转换为Android,我将最终得到大约(7 * 2.5)= 17.5 MB 的二进制文件,涵盖所有架构。

真的有必要为APP_ABI := all的所有架构构建而忘记吗? Android 是否会在执行时选择正确的版本?这是为Android构建的标准方法吗?知道每个Android都会受到支持吗?

奖金问题:

我在VirtualBox上使用Android并连接到我的操作系统的共享文件夹,但我的Android显示带有问号的二进制文件并询问我如何打开它们。这是否需要在OSX上进行某种捆绑才能正确执行? TX

1 个答案:

答案 0 :(得分:0)

这取决于你现在使用

设定大多数Android手机的设备
armeabi-7a

如果你打算像Genymotion一样在模拟器上运行你的应用程序,那么添加x86二进制文件。

所以所有的lib都不需要只包含你想要支持的设备

所以你可以在Application.mk中指定,如果想要定位大多数Android手机。

APP_ABI := armeabi-v7a,x86