java - 为 Objective-C 和 Java 编写通用代码的最佳方法?

标签 java objective-c

我正在同时开发适用于 Android 和 iOS 的 native 应用程序。我知道没有“好的”方法可以编写一次代码并使其在两个平台上运行——从技术上讲,是的,我可以使用 Phonegap,但从用户的角度来看,由于平台的差异,它们不会感觉像 native 应用程序.

但是有没有办法在两个平台之间共享 Controller 代码子集?我说的是“不可见”代码,即与(直接)绘制 UI 无关且不使用 iOS 和 Android 框架的代码。例如,如果我正在开发《愤怒的小鸟》,那么实现控制鸟类飞行轨迹的物理方程的最佳方法是什么?如何最好地在两个平台之间共享此类代码?我所说的“最佳”是指如何 1) 最大限度地缩短开发时间,2) 简化维护,3) 简化 future 的升级。

最佳答案

我看到的选项:

  1. 使用服务器端计算逻辑,然后无论在什么平台上任何UI都可以显示它。然而,此选项需要网络连接,或者可能由于 ping 导致响应缓慢。

  2. 用 C/C++ 编写通用代码。此选项比较复杂,但它在 100% 的情况下都有效,因为 c/c++ 编译为 native 代码,这意味着几乎所有操作系统都支持它系统。

  3. 用Python、LUA等脚本语言编写通用代码 ...这需要客户端解释器。如果您在每个帧上执行脚本并在其中执行复杂的逻辑,也可能会出现性能问题。

  4. 使用phoneGap/mono/marmelade ..。这将限制 native 功能,并且您将始终依赖第 3 方而不是 native SDK。但如果你开发 openGL es 游戏,也许 marmelade 是最好的选择。

我认为 C/C++ 是最佳选择,特别是如果您正在开发游戏并且不想将自己限制在一个平台上。

PS:如果我正在开发像愤怒的小鸟这样的游戏,我会使用 BOx2d 而不是自己实现物理。

编辑: native 代码仅在 Windows Phone 8 上受支持

关于java - 为 Objective-C 和 Java 编写通用代码的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10153777/

相关文章:

objective-c - 将十六进制值存储到 NSData

objective-c - Google 的 "Google search 2.0"应用程序如何在 iO 上启动其他应用程序?

ios - UIScrollView 不能正确滚动。

java - 如何获取 System.out.Print 的结果并将其设为字符串?

java - 仅使用合理的键在 JTable 单元格中开始编辑

java - 在 Spring 中缓存带有数组参数的方法

java - 将 init 参数传递给 Manage bean

ios - 如何保存来 self 的服务器的响应,以及我如何访问该数据

ios Facebook 登录按钮 - 不会更改为注销

java - 在 while 循环中使用 try-finally block