【发布时间】:2014-11-05 19:45:52
【问题描述】:
我最近开始使用 NDK,希望将我的 lib 转换为 Android。我的问题是 per-architecture 的二进制文件数量比成功 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
- x86
- x86_64
二进制文件的平均大小为 6 到 10 KB,但加在一起大约为 64 KB(磁盘大小)。
我的问题是我开发了一个跨平台引擎(Windows、Linux 和 OSX) 并且通过静态链接我在 2.5MB 上获得了大约 2.5MB 的大小em>每个平台都支持。我不知道 Android 二进制格式(ELF?),但我假设它会以大约相同的大小结束。
这意味着,如果我成功地将我的库转换为 Android,我最终将得到大约 (7 * 2.5) = 17.5 MB 的二进制文件,涵盖所有架构。
真的有必要使用APP_ABI := all 为所有架构构建,然后忘记了吗? Android 是否在执行时选择正确的版本?这是为 Android 构建的标准方法,并且知道所有的 Android 都将得到支持吗?
额外问题:
我在 VirtualBox 上使用 Android 并连接到我的操作系统的共享文件夹,但我的 Android 显示带有问号的二进制文件并询问我如何打开它们。这是否需要像 OSX 上的某种 bundling 才能正确执行?交易
【问题讨论】:
-
你也可以为每个ABI构建不同的apk developer.android.com/google/play/publishing/multiple-apks.html
-
@Selvin,感谢链接,准确地描述了它:)
标签: android android-ndk