我最近开始玩NDK,希望将我的lib转换为Android。我的问题是每个架构的二进制文件的数量比成功的 ndk-build 之后的二进制文件的数量要多 我的NDK版本是 r10c 并构建一个简单的应用程序(可执行文件),如下所示:
#include "stdio.h"
int main() {
printf("hello from Windows Mr. Android!!");
return 0;
}
为 / libs 文件夹中的二进制文件创建 7 架构文件夹,其中包括:
二进制文件的平均值为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
答案 0 :(得分:0)
这取决于你现在使用
设定大多数Android手机的设备armeabi-7a
如果你打算像Genymotion一样在模拟器上运行你的应用程序,那么添加x86二进制文件。
所以所有的lib都不需要只包含你想要支持的设备
所以你可以在Application.mk中指定,如果想要定位大多数Android手机。
APP_ABI := armeabi-v7a,x86