编写Objective-C和Java的通用代码的最佳方法是什么?

时间:2012-04-14 12:52:36

标签: java objective-c

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

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

2 个答案:

答案 0 :(得分:2)

我看到的选项:

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

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

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

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

  5. 在我看来,C / C ++是要走的路,特别是如果你正在开发游戏并且不想将自己限制在一个平台上。

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

    编辑: Windows Phone 8仅支持本机代码

答案 1 :(得分:0)

用C语言写作可能就是答案。

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

根据this article,您可以使用JNI在Android中执行非常类似的操作。

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