Android Native - 何时使用64位NDK?

时间:2014-10-17 11:22:44

标签: android c++ android-ndk 64-bit 32bit-64bit

根据NDK的官方下载页面:http://goo.gl/vI7Oek 有两个目标版本:

  • x86目标
  • x64目标

我想知道(作为NDK中的新手),这是否意味着我应该在为配备x64处理器的设备编译应用程序时使用x64 NDK?

如果我只需要一个" .apk"文件,如何使它包含x86和amp; x64构建? (如果可能的话)

1 个答案:

答案 0 :(得分:20)

更新:这个问题现在有点过时了。从版本10c NDK is distributed in a single package for all target platforms again开始。答案已经更新,以反映这一事实。


首先,您应该区分运行应用程序的设备的体系结构(可以是ARM(几种)32或64位,MIPS 32或64位,以及Intel x86 / x64)和体系结构构建机器的/ OS(可以是在Intel x86 / x64处理器上运行的Windows,Linux或Mac)。

假设你有Windows 64位。然后(现在最新版本为10d),您应该下载android-ndk-r10d-windows-x86_64.exe。它将允许您为NDK支持的所有目标平台(32位和64位)构建。

如果您为32位目标设备构建,该应用程序也将在64位设备上运行,因为所有列出的64位体系结构都向后兼容其32位对应设备。

但是如果要使用目标体系结构的64位特定功能,则应使用64位工具链。如果只构建64位,则应用程序不会在32位架构上运行。

如果您必须支持多个目标(例如ARM和Intel x86),则可以在Application.mk中指定您希望为其构建本机代码的目标(google for APP_ABI),您将构建多个版本的本机库,系统将在运行时加载适当的库。此外,您可以为同一架构系列的32位和64位版本提供单独的二进制文件,因此您可以对它们进行微调。

您可以进一步阅读NDK包中的文档,它们非常详尽。