我们有一个本机库(一个完整的游戏引擎和游戏代码),它构建在两个不同的版本中。一个版本支持带有32个浮点寄存器和Neon SIMD指令的armeabi-v7a,另一个版本支持带有16个浮点寄存器的armeabi-v7a (用于例如Tegra 2设备),因此不使用Neon SIMD指令,因为这是行不通的。
当我们的游戏开始时,我们在Java做一些设置,然后加载正确的库。现在,如何找到要加载的库?一种解决方案是添加另一个本机库,除了上面提到的两个,它只有一个方法调用JNI来使用NDK检查硬件支持.但是,肯定有办法从Java中检查这一点吗?
我尝试打印在android.os.Build类中找到的所有内容,并得到了这些内容,但是我看不出在这里使用什么:
BOARD: EeePad
BOOTLOADER: unknown
BRAND: asus
CPU_ABI: armeabi-v7a
CPU_ABI2: armeabi
DEVICE: TF101
DISPLAY: IML74K.WW_epad-9.2.1.27-20120615
FINGERPRINT: asus/WW_epad/TF101:4.0.3/IML74K/WW_epad-9.2.1.27-20120615:user/release-keys
HARDWARE: ventana
HOST: Mars
ID: IML74K
MANUFACTURER: asus
MODEL: Transformer TF101
PRODUCT: WW_epad
RADIO: unknown
SERIAL: 037c708543204317
TAGS: release-keys
TYPE: user
USER: unknown发布于 2013-12-03 13:21:55
您可以尝试阅读/proc/cpuinfo,它应该包含一个Features :行,告诉您您所使用的核心的功能。
例如,在我的Xperia Z1上,它显示:
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt应该很容易从Android / Java层处理这一行的内容。
这也是NDK在调用getCpuFeatures()时所做的工作。
https://stackoverflow.com/questions/20280622
复制相似问题