2

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

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

4

2 回答 2

2

我看到的选项:

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

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

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

  4. 使用 phoneGap/mono/marmelade ...... 这将限制本机功能,您将始终依赖第 3 方而不是本机 SDK。但是,如果您开发 openGL es 游戏,也许 marmelade 是要走的路。

在我看来,C/C++ 是可行的方法,特别是如果您正在开发游戏并且不想将自己限制在一个平台上。

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

编辑:本机代码仅在 windows phone 8 上支持

于 2012-04-14T13:13:03.077 回答
0

用 C 语言编写可能是答案。

Objective C 只是 C 的超集,您可以将模型层编写为 c 函数的包装器。

根据这篇文章,您可以使用 JNI 在 Android 中做一些非常相似的事情。

正如您所说,这仅适用于模型层。您必须为 iOS 中的视图和控制器层编写 Objective C,并且您将在 Android 上处于相同的情况。

于 2012-04-14T13:10:27.253 回答