哪些Android设备支持jni?

时间:2012-10-05 04:44:40

标签: android bluetooth android-ndk java-native-interface equinox

我开发了一个Android应用程序,它为Archos 43使用JNI( java native interface )。

没有问题,我能够顺利运行应用程序。 后来我尝试在三星I9100G Galaxy S II 以及三星I9100 Galaxy S II 上运行相同的应用程序。

我能够在 I9100G 上运行应用程序,但不能在 I9100 上运行。

  

原因是I9100不支持应用程序的JNI部分。

我确实试图了解其原因并且能够发现I9100G使用Ti OMAP 4430 chipsetPowerVR SGX540 as GPU whereas I9100 uses Exynos 4210 chipset and Mali-400MP as GPU.

我怀疑原因可能是芯片组的变化(因为Archos 43也使用了Ti OMAP)。但是我的搜索无法获得任何进一步的结果。

更新该应用程序使用蓝牙。在尝试连接到自定义硬件(CH)时,在I9100上运行应用程序时无法从CH获得任何响应。蓝牙通信部分使用jni编写。

所以我的问题是,由于芯片组,我是否无法在 I9100 上使用JNI运行我的应用程序,为什么会这样?

另外一个更普遍的问题是哪些设备支持Android JNI应用程序以及设备运行Android JNI应用程序所需的基本功能是什么? (我花了相当多的时间来寻找所有这些问题的答案,我们将非常感谢任何帮助。)

谢谢。

2 个答案:

答案 0 :(得分:3)

所有Android设备都支持JNI,这就是操作系统的重要组成部分:通过JNI使用本机库的Java服务和框架。但是,有不同的体系结构,如果您有本机模块,则需要确保为要支持的每个体系结构构建一个。即使您只针对ARM设备,也有ARMv5和ARMv7。 ARMv5应该适用于所有,但速度较慢。

Galaxy SII设备可能使用相同的架构,因此您遇到了其他一些问题/错误。你得到了什么错误?发布logcat(如果有)。也许您正在尝试访问其中一台设备上没有的硬件?或链接系统库,由于某种原因丢失?

答案 1 :(得分:1)

现在您已经披露问题可能与2.3.3上的BT有关,这一切都是有道理的。 4.0之前的Android蓝牙接口并非标准化,并且您的代码最有可能是TI OMAP特有的。因此,如果您想支持其他芯片组,则需要与其他驱动程序进行通信,或者使用ICS及更高版本的目标设备进行通信。