7

我为 Archos 43 开发了一个使用 JNI( java 本机接口)的 Android 应用程序。

没有问题,我能够顺利运行应用程序。后来我尝试在Samsung I9100G Galaxy S IISamsung 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 应用程序所需的基本功能是什么?(我花了相当多的时间试图找到所有这些问题的答案,任何帮助将不胜感激。)

谢谢你。

4

2 回答 2

3

所有 Android 设备都“支持”JNI,这就是操作系统的很大一部分是如何实现的:Java 服务和框架通过 JNI 使用本机库。然而,有不同的架构,如果你有一个本地模块,你需要确保为你想要支持的每个架构构建一个。即使您只针对 ARM 设备,也有 ARMv5 和 ARMv7 设备。ARMv5 应该适用于所有,但速度较慢。

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

于 2012-10-05T04:55:34.663 回答
1

既然您透露该问题可能与 2.3.3 上的 BT 有关,这一切都是有道理的。4.0 之前的 Android 蓝牙接口未标准化,您的代码很可能是 TI OMAP 特定的。因此,如果您想支持其他芯片组,则需要与其他驱动程序或具有 ICS 或更高版本的目标设备通信。

于 2012-10-05T10:54:13.913 回答