跨平台移动C ++ SDK通常如何工作?

时间:2011-12-25 11:42:36

标签: android ios mobile cross-platform

我在这里找到了一个相关的答案:How do cross-platform mobile app development frameworks work?

但我正在考虑更多关于c ++跨平台SDK的工作(例如Corona,Marmalade,EdgeLib等)。它们提供了导出iOS和Android二进制文件的功能,同时允许开发人员使用C ++代码。我的假设如下所示,但如果我在任何地方都错了,请纠正它:

  1. 用户使用C ++编写代码。
  2. SDK具有一个接口层,其中包含用户代码中调用的C ++函数,请求移动操作系统特定的功能。此接口层是根据在特定移动操作系统中实现SDK函数调用所需的代码构建的(用Java编写的Android和用于iOS的Obj-C)。
  3. 第一部分我最困惑的是因为我没有太多的移动开发经验点:iOS和Android都有C ++交叉编译器,可以在用户的​​应用程序中编译用C ++编写的通用逻辑代码吗?

2 个答案:

答案 0 :(得分:5)

MoSync是基于C ++的跨平台移动工具包的一个示例 - 这个工具包首先使用开源GCC编译器将应用程序的C ++代码编译成类似于程序集的格式。 MoSync的一个自定义工具(称为“PipeTool”)然后将这个汇编格式与其预编译的库组合成各种目标格式,包括java字节码(用于Android)或Objective-C源(用于iOS)。有关此流程的更多详细信息here

目标平台(Android或iOS)上的最终编译由您自己决定,使用原生IDE(适用于iOS的Xcode和适用于Android的Android SDK的Eclipse IDE)。因此,要创建iOS应用程序,您仍然需要成为Apple iOS开发人员计划的成员(例如每年99美元),而Eclipse IDE和Android SDK是免费的。

您的Corona SDK示例并不完全相关,因为Corona使用云中的自定义构建服务器构建为本机二进制格式 - 其中没有完全记录为其封闭的源工具包。您每年向Corona支付订阅费,以便能够构建应用程序。我不确定你提到的其他人(Marmalade,EdgeLib等),但会认为它们与MoSync类似。

答案 1 :(得分:4)

查看codenameone.com - 他们使用Java但最终编译为C ++ for iOS和Java for Android。

不同之处在于他们的环境包括所有图形,并且他们自己创建控件,因此只需一个代码库即可获得实际的本机应用程序。