Android NDK:我应该在Application.mk中为APP_ABI设置什么?

时间:2013-10-18 10:49:03

标签: android android-ndk x86 arm abi

我想知道我应该在Android游戏的Application.mk文件中添加哪些架构。

我想支持所有可以在Google Play和其他类型的Android商店下载游戏的平台。

我会说我应该设置:

APP_ABI := armeabi x86 (as many x86 devices are coming soon as far as I know)

但我想知道我是否应该设置:

APP_ABI := armeabi armeabi-v7a x86

APP_ABI := all

请澄清。

2 个答案:

答案 0 :(得分:13)

您还可以指定使用mips时会包含的all

armeabi代码可以在armeabi-v7a设备上运行,但不能相反。因此,如果您拥有armeabi-v7a,则不需要 armeabi,但它允许您在某些设备上利用硬件浮点运算。

另请注意,您添加的架构越多,生成的APK就越大。如果您经常为所有平台进行编译,那么您的构建将需要更长的时间。

在NDK安装中查看docs / CPU-ARCH-ABIS.html,了解有关不同体系结构的更多信息。

答案 1 :(得分:6)

我建议至少设置armeabi-v7a和x86。

armeabi-v7a涵盖了大多数(可能全部)最新的arm设备,并为您提供硬件浮点支持。

x86涵盖了当前所有x86设备(其中最大的是三星Galaxy Tab 3)。此外,今年以来英特尔正在大力推广平板电脑市场份额,并且未来可能更受欢迎。

这有很多影响。 krsteve是正确的,这将使你的构建稍微慢一些(因为你现在正在有效地构建你的游戏两次)并且它将使你的APK更大(因为你将x86和ARM二进制文件包括在一起),但是,在宏大的方案中这些二进制文件的大小可能会被你的资产相形见绌,如果不是,那么你的游戏可能不会大到超过Google Play APK大小限制。

总结:

  1. 使用armeabi-v7a和x86,或使用全部
  2. 额外的apk尺寸会 要么与您的资产规模无关,要么相形见绌
  3. 你的构建时间 会增加,但会增加你可以击中的设备数量,所以 这似乎是一个公平的交易