【发布时间】:2013-12-15 08:19:40
【问题描述】:
我们有一个内置于两个不同版本的原生库(一个完整的游戏引擎和游戏代码)。一个版本支持带有 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
【问题讨论】:
-
不幸的是,您似乎必须添加另一个本机库来检查硬件支持。查看 hello-neon 示例:github.com/android/platform_development/tree/master/ndk/samples/…
标签: java android cpu-registers neon