Dropbox如何使用C + +的跨平台的iOS和Android开发

以下是我的笔记,总结主要的开发者史提芬的邮箱kabbes谈论他们把邮箱Android。它还包括由史蒂芬和蒂娜文波莱托曾在旋转木马,谈到了他们的经验,同时在iOS和Android推出1版本从谈判信息。请注意,我可能误解了几点,是我在这里说的一切都持怀疑态度。我的Dropbox团队什么我的错误道歉。

动机

Android是不会消失的。

让我们面对它,Android是不会消失的,史蒂芬说波莱托满满一房间iOS开发者。但几个平台充分发展是昂贵的和耗时的。基本上,你的公司已经编写和维护多个实现相同的问题。团队写(已经修复)相同的错误多次。有一个很好的机会在一个平台上的错误报道也存在对别人而没有被人注意到。应用程序就意味着相同的行为在所有平台上可能表现出细微的差别,由于不同的实现。航运的新功能,同时在所有平台上是很难的。

当工作开始对Android的邮箱APP,团队写出了很大一部分的非UI代码,C++而不是重写整个应用程序在Java与共享的目的,常见的C++层之间iOS和Android。的iOS应用程序使用的核心数据的同时,使迁移了核心数据共享的C++库,也是过程的一部分。C ++似乎是一个明显的选择,因为它可以在所有平台和团队成员的首选语言在Java。

旋转木马团队自推出iOS和Android上同时是一个重要的目标从一开始就作出同样的选择。

如果你还没看C++在过去的五年或十年,值得一看。

工具链

C + +是原生支持iOS是Objective-C和C++使用Objective-C C++之间的接口非常简单。

在Android平台上,调用C++可以通过NDK了,据说是不使用的乐趣。Dropbox发现谷歌的元构建系统的学校工作的很好。此外,该Java本地接口是一种痛苦,你不得不接受。但这些问题不是一个障碍,史提芬表示希望谷歌或社区将随着时间的推移建立更好的工具支持。

C++作为一种语言在Objective-C社区相当坏名声。然而,史提芬指出,它改善了许多C + + 11和绝对值得一看,如果你没有使用过它,最近。事实上,许多现代的Objective-C功能块或弧甚至在C + + 11近的等价物(分别为λ和智能指针,)。C++仍然是一个非常复杂的语言,不过,也涉及到很多球队的学习曲线

SQLite是一个强大的数据存储支持到处显而易见的选择。标准SQLite C API是一个有点笨拙,但存在许多的C++库,它包在一个面向对象的接口,就像是在Objective-C世界fmdb。

把它作为一个客户端-服务器架构的服务器是永不离线和零延迟。

建筑

客户端服务器的设计

所有的界面代码使用本地UI API在所有平台(Objective-C / UIKit在iOS,Android的Java)。大多数“模型层”代码,生活在共同的C + +库。而不只是一个模型层,史提芬将设计一个客户端-服务器架构的服务器(C + +库)是永不离线和零延迟。看到UI代码和共享库作为两个独立的实体有助于设计界面清晰,因此两关注适当分开。

在应用程序的客户端-服务器架构也决定了数据是如何UI和C + +层间传递。两层不访问同一数据对象。他们使用的消息传递给从A到B的数据拷贝

在共享库和平台的本地代码之间的界线总是很棘手。你应该准备作出错误的决策,纠正后。这是因为,表面上是共享库的部分平台的具体特点和API的一些事情进一步复杂化。例子包括网络(认为与在iOS nsurlsession后台下载的应用程序),后台处理行为,以及文件系统访问(因为iCloud缺省备份所有文件)。对于这些地区,球队不得不在共享库,然后在客户端应用程序实现本地实现建立抽象。

其他的平台特定的API,更换必须选择。这样的一个例子是用于存储偏好和设置在可可nsuserdefaults系统。如API不可用的共享库,Dropbox使用谷歌的LevelDB相反。

“重写”的核心数据

共享的C++库的核心组件是一个查询和坚持                                                       更多相关软件开发信息:咨询联系电话:86-755-82821019 29654839 外贸销售管理 ER管理系统 深圳企业软件定制开发公司  进销存系统 OA管理系统 FMS货代软件   深圳软件公司软件定制开发OA,ERP,CRM,外贸系统,进销存系统 深圳网站建设 深圳网络公司

About the Author: wp_kson