1

我知道 android 提供对ARMv5TEARMv7aCPU 的支持。(armeabiareabi-v7a文件夹)现在大多数 Android 手机的 CPU 都是ARMv6不带VFPARMv6VFPARMv7带的VFP

我的应用程序有物理模拟,我希望只针对具有硬件浮点的设备。( VFP)。我不希望支持没有VFP.

如何配置 NDK 项目以编译ARMEABI代码以ARMv6使用VFP而不是ARVv5TE

上传 APK 时,我可以通过 Google Play 界面ARMv6阻止旧VFP设备。ARmv5

4

1 回答 1

3

NDK 并没有真正提供任何方便的方法来更改默认构建选项。您只能添加其他标志,但不能覆盖标准选项。

默认LOCAL_CFLAGS和大多数其他选项对您不起作用,因为 NDK 将其选项放在您的选项之后并覆盖您的标志。我知道的唯一解决方案是APP_CFLAGSApplication.mk. 因此,以下应该会导致针对具有 VFPv2 的 armv6 优化的二进制文件:

APP_CFALGS += -march=armv6 -mno-soft-float -mfloat-abi=softfp -mfpu=vfp

另外,如果我没记错的话,armv6 硬件上的 vfp 指令需要在 arm 模式(而不是 thumb)下编译您的代码。为实现这一LOCAL_ARM_MODE := arm目标的每个目标指定。Android.mk

顺便说一句,我认为你不会对 armv6 设备的性能感到满意。即使是最新的高端 armv7 处理器也比现代英特尔酷睿 CPU 慢 10 倍。

于 2012-12-09T22:27:38.987 回答