我的 Android 应用程序有一些不同的版本:支持/不支持 FPU,支持/不支持 NEON。
在 Google Play 市场中提交此类应用的最佳方式是什么?是否可以根据目标设备上的 NEON ir FPU 的可用性来过滤目标设备?如果没有,我应该怎么做才能支持所有设备(没有这些硬件功能)?
我的 Android 应用程序有一些不同的版本:支持/不支持 FPU,支持/不支持 NEON。
在 Google Play 市场中提交此类应用的最佳方式是什么?是否可以根据目标设备上的 NEON ir FPU 的可用性来过滤目标设备?如果没有,我应该怎么做才能支持所有设备(没有这些硬件功能)?
AFAIK,Google 只为 Android 定义了两组 ARM ABI:ARMv5 和 ARMv7a。在 ARMv5(较旧的 Android 设备)上,保证不支持 FPU 和 NEON。在 ARMv7a 设备上,FPU 和 NEON 支持是可选的。市场在这 2 个 ABI 上筛选符合条件的设备。您可以构建一个“胖二进制文件”,其中包含每个 ABI 的唯一本机代码库。对于 FPU 和 NEON 功能,您需要在运行时测试它们是否存在。这是查看 NEON 指令是否可用的代码:
#include "cpu-features.h"
bHasNEON = FALSE;
if (android_getCpuFamily() == ANDROID_CPU_FAMILY_ARM &&
(android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0)
{
// use NEON-optimized routines
bHasNEON = TRUE;
}
您还可以测试 ARMV7 支持 (ANDROID_CPU_ARM_FEATURE_ARMv7) 和 VFP 支持 (ANDROID_CPU_ARM_FEATURE_VFPv3)