代码之家  ›  专栏  ›  技术社区  ›  slf

跨平台iPhone/Android代码共享

  •  39
  • slf  · 技术社区  · 14 年前

    简而言之:在iPhone和Android版本之间共享/重用代码最有效的方法是什么?

    我认为最常见的两种情况是:

    1. 空白石板新项目,提前知道有一大块可重用的逻辑需要在每个设备上运行。
    2. 现有的iPhone代码库,将C、C++和ObjtoE-C移植到 Android NDK 不然。

    是的,当然在一个完美的世界里,所有的应用程序都会插入到神奇的云端,所有可重用的逻辑都会出现在谷歌应用引擎或一些网络服务中,但这不是这个问题的精神所在。在经历了从iPhone到Android的第二手无代码重用端口后,看到了人们不得不忍受的痛苦,我想知道其他人是如何避免的。

    9 回复  |  直到 10 年前
        1
  •  21
  •   Goles    14 年前

    根据我的经验,您可以使用Android NDK来编译C和C++,因此如果您在iPhone中使用iPhone Obj+C++(.mm)绑定来在C++/C引擎中使用,那么在Android中使用Java绑定到同一个引擎,它应该是完全可能的。

    所以C++/C引擎(几乎与Android和iPhone相同的代码库)+瘦绑定层=可移植代码。

        2
  •  8
  •   Community kfsone    7 年前

    就像我告诉别人 similar question 不久前,使用MVC并在C++中实现MC,在Obj-C或Java中实现V。

        3
  •  5
  •   Tom Andersen    14 年前

    尽可能在普通的C(或C++)中尽可能多地编写,只需在Android和iPhone中包含相同的文件即可。也适用于Windows/Mac。”跨平台的库往往会消耗你。

        4
  •  3
  •   maurice    10 年前

    你可以一起去 Marmalade SDK …编译一次到本地ARM和部署到Android和iPhone相同的二进制,标准C/C++,在Windows或Mac上开发,包括许多(可选)中间件技术。

        5
  •  2
  •   Tuomas Pelkonen    14 年前

    我一直在用我自己的框架使用Lua为iPhone创建应用程序和游戏。这样,我最终可以使用android ndk为android实现相同的框架,但实际的应用程序代码对于两个平台来说可能完全相同。

    我不认为有一个简单的方法可以做到这一点,因为API明显不同,而且本地编程语言也不同,但是我建议用两个平台支持的任何语言构建您自己的框架。也许已经有了一个框架,可以为你做一些困难的事情?如果没有任何好的框架来实现这一点,那么这显然是一个自己实现一个框架的机会。

        6
  •  2
  •   Victor Sergienko    13 年前

    XMLVM 看起来值得一试。

        7
  •  1
  •   rbgrn    13 年前

    我使用 BatteryTech 对于我的平台抽象内容和项目结构,如下所示:

    在我的电脑上:

    gamename-仅包含常用代码

    GameName Android-主要包含BatteryTech的Android特定代码和Android配置,构建人员指向GameName项目以获取通用代码

    gamename-win32-仅用于构建到Windows,使用gamename项目中的代码

    在我的Mac上:

    gamename-仅包含常用代码

    gamename ios-iphone/ipad版本,导入通用代码

    GameName OSX-OSX本机版本。导入公共代码。

    我使用SVN在我的PC和Mac之间共享。我唯一真正的问题是,当我将类添加到Windows中的公共代码库中,然后在Mac上更新以将它们从SVN中拉下来时。Xcode没有一种方法可以在没有脚本的情况下自动将它们添加到项目中,因此每次我都必须手动将它们拉入,这是一种痛苦,但不是世界末日。

    所有这些东西都配有电池技术,所以一旦你拿到它,很容易就知道了。

        8
  •  1
  •   Jonas Byström    12 年前

    Moai 对于较小的项目是免费的,也被大工作室使用。我自己经营自制啤酒,但如果没有,我可能会自己用莫埃酒,因为它看起来很有前途。他们声称它可以连接到Mac、PC、iOS、Android和我认为甚至是Kindle Fire。

    你想在Lua中编写大部分代码,但是你可以访问所有的代码,这样你就可以在需要的时候使用C++。

        9
  •  0
  •   Janusz Daniel Rindt    14 年前

    你也可以看看 Titanium . 通过他们的工具,你可以用抽象的网络代码编写你的应用程序,他们将帮助你与所有的GPS,加速度传感器等网络应用程序接口。