如何使用通用C ++业务逻辑和数据访问层构建跨平台移动应用程序

时间:2014-01-26 19:42:49

标签: c++ iphone android-ndk windows-phone cross-platform

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

  1. 你认为这在理论上会起作用吗?

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

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

1 个答案:

答案 0 :(得分:1)

  

你认为这在理论上会起作用吗?

是的,我为Android和iOS编写过的应用程序,它使用在两个平台上用C ++编写的数据访问层。我写了Android版,一位同事写了iOS版。它不是开源的,所以我无法向您展示代码。

  

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

在Android上调试共享C ++代码可能会很麻烦。我从来没有在Windows上使用调试器。我通常会仔细阅读我的代码并将消息打印到LogCat,如果它不是我可以在iOS上重现和调试的东西。通常,这只会影响链接C ++业务逻辑和本机UI代码的JNI层。

您可能需要为平台单独构建第三方库。 Curl有关于为每个平台构建它的说明,因此不应该太麻烦。

除了学习JNI之外,我遇到的最大问题是应用程序必须在每个平台上看起来相同(或非常相似)。我建议调查Qt Mobile Edition πάνταῥεῖ建议,但它目前不支持Windows手机。尽管如此,您至少可以为三个平台中的两个平台编写一个用户界面 - 您的共享业务代码仍然可以重复使用。我们正在开始第二个应用程序,Qt绝对是我们的最佳选择。我认为我们不想重复尝试使用非常不同的API在两个平台上提供相同功能的经验。

  

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

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