【发布时间】:2013-12-29 18:01:59
【问题描述】:
我正在开发一款可在 Android 和 iOS 上运行的应用,我们的团队决定使用共享库来减少代码和重复工作。
其中大部分内容都非常简单:我们用某种可以跨平台的语言编写库(C++ 带有本机接口,C# 带有 Mono 等),然后提供特定于平台的绑定。然而,问题在于,由于我们的库必须实现复杂的应用程序逻辑,它必须与系统本身进行大量交互(将数据存储在文件和数据库中,查询位置、通知等 API)。据我们所知,这需要另一层——位于我们的库之下和系统之上——它是用特定于平台的语言编写的,并提供我们的库可以调用的绑定。
这样做的问题是,不同的平台具有根本不同的设计范例来执行不同的任务。例如,存储应用程序数据涉及在两个平台上接触根本不同的系统组件(数据库与文件、不同的分区或具有不同文件路径的文件)。我们希望这个特定于平台的逻辑远离库,但弄清楚如何将它放在转换层中并不明显。我们不能简单地提供 API 方法——如果一个平台需要在不同的时间或以不同的顺序执行给定的操作会发生什么?如果在某些平台上可能需要生成不同的线程,那么监听系统操作呢?
问题是:关于如何干净地解决这些问题有什么智慧吗?我们知道以前已经这样做过——例如,Dropbox 有一个用 C++ 编写的通用库 (libdropbox),支持他们的 Android、iOS 和桌面客户端。
谢谢!
编辑:我们知道像 Xamarin 这样的单一代码库选项是可用的,但我们很想知道是否还有其他选项。
【问题讨论】:
标签: android ios api cross-platform