2014-01-26 22 views
0

我们正在尝试为所有移动平台(Android,iPhone,Windows phone)创建应用程序。我们将使用每种平台的本地开发语言(Java,Objective C,C#)构建用户界面。对于中间层(DataAccess Layer和业务逻辑层),我们计划在所有平台上使用C++。 我们将使用像Curl,sqlite3,libzib这样的库。所以我认为一个好的解决方案是创建两个独立的C++项目(DataAccess和业务逻辑)并引用我们需要的库。首先我们将从Android开始,所以我将使用Android NDK将这两个项目作为预建静态库加入,并在jni文件夹中添加一些他们将在UI和业务逻辑之间进行通信的方法。后面我们会为其他两个平台做同样的事情。因为我是很新的C++我想提出以下几个问题:如何使用通用C++业务逻辑和数据访问层构建跨平台移动应用程序

  1. 你认为这在理论上是否行得通呢?

  2. 我们将要面对什么问题(例如调试,在不同的操作系统中使用Curl)?

  3. 是否有任何使用相同方法的开源移动项目?

+0

据我所知[Qt Mobile Edition](http://qt.digia.com/Product/Qt-for-Mobile-Development/Qt-Mobile-Edition/)提供了一个非常好的跨平台移动应用程序平台。一般来说,你的问题是否为SO的主题(请参阅我的近距离投票)。 –

回答

1

你认为这在理论上是否行得通呢?

是的,我已经为Android和iOS编写过应用程序,它使用两种平台上用C++编写的数据访问层。我编写了Android版本,一位同事编写了iOS版本。它不是开源的,所以我不能给你看代码。

我们要面对哪些问题(例如调试,在不同的操作系统中使用Curl)?

调试共享的C++代码可能是一个痛苦的Android的屁股。我从来没有得到过在Windows上工作的调试器。如果我不能在iOS上重现和调试,我通常会认真阅读我的代码并将消息打印到LogCat。通常这只会影响链接C++业务逻辑和原生UI代码的JNI层。

您可能需要为平台单独构建第三方库。 Curl有为每个平台构建它的指示,所以不应该太麻烦。

除了学习JNI,我有最大的问题是,应用程序必须看起来相同(或非常相似),每个平台上。我建议您考虑Qt Mobile Edition作为 建议,但目前它不支持Windows手机。不过,您至少可以为您的三个平台中的两个平台编写一个用户界面 - 而且您的共享业务代码仍然可以重复使用。我们正在开始第二个应用程序的过程中,Qt绝对是我们最好的选择。我认为我们不想重复尝试在使用非常不同的API的两个平台上提供相同功能的经验。

有没有使用相同的方法任何开源移动项目?

我不知道任何副手,但我相信你可以谷歌它。

+0

对于Android来说,你认为哪种策略更好? 1.在jni中包含curl,libzip等库,作为独立的静态库2.将它们包含为业务逻辑C++项目的引用,然后将其作为预建静态库包含到android.mk – Stam

+1

我不能说哪个是“更好”,因为我不知道。经过双重检查,我们实际上在我们的第一个应用中做了一些,但只有两个依赖。对于我们计划的下一个应用程序,只需构建一组预构建器并将它们包括在静态库中,但随后我们会有更多的依赖关系,并且用这种方式管理似乎更容易。为不同平台构建每个平台都由独立的构建脚本进行管理,这些构建脚本利用了独立的工具链。 –

相关问题