我正在构建一个Android应用程序(2.2及更高版本),它使用 NDK 来执行一些CPU密集型操作。
我们需要在开发NDK应用程序时更加小心,因为它在不同的 CPU架构上表现不同。
我希望我的应用程序能够运行在 ARM,ARM-NEON,MIPS和x86架构上。
但here我读到了,
如果要将本机库部署到x86,则应用程序必须 定位Android 2.3或更高版本。
由于我定位 android 2.2及更高版本,这会产生任何问题吗?
我怎样才能让我的应用运行在上述所有架构上?
答案 0 :(得分:1)
我不知道这一点,但Android开发人员规范似乎很清楚。
[...] your application must target Android 2.3 or later
也许有一些扩展可以让你成为可能,但我想这不是编写Android扩展库的最常见区域。试试google吧。
编辑:
看一下这些链接:
http://www.nordichardware.com/Operating-systems/android-22-goes-native-x86-in-q3.html
答案 1 :(得分:1)
从技术上讲,如果您可以使用与9级兼容的NDK进行构建并将其打包,则应在2.2 ARM设备和2.3其他基于架构的设备上运行(除非2.3,否则不支持其他架构,因此我们没有这样的设备)。
当您为特定体系结构添加本机库时,您的应用将在Google Play进行过滤。
包含针对特定CPU体系结构(例如,ARM EABI v7或x86)的本机库的应用程序仅在支持该体系结构的设备上可见。
因此,即使您的应用程序可能在具有Level 8 api的x86设备上运行,也可能会从市场中过滤掉,x86设备将无法将其视为可用。
答案 2 :(得分:1)
我有一个针对Android 1.5及更高版本的x86,MIPS和ARM的应用程序,它没有造成任何问题。
请注意,没有ARM-NEON架构:armeabiv7a不保证支持NEON。