跨平台移动设备开发

翻译自Xamarin官方文档《Creating Mobile Apps with Xamarin.Forms》

近年来个人电脑产业尽力了巨大的变化。当然台式机仍然存在,它们在编程,写作,电子表格,数据跟踪等需要键盘和大屏幕的任务中仍然必不可少。但是很多个人计算技术出现在更小的设备上,尤其是在快速信息,媒体消费和社交网络方面。平板和智能手机与台式机在根本上的不同之处在于它们主要基于触摸,而键盘只有在需要的时候才会弹出来的用户交互模型。

移动设备的现状

尽管移动市场有快速改变的可能,但是目前主要被两种手机和平板平台所支配:

  • 包括各种iPhone和iPad在内的Apple家族,它们全部运行iOS操作系统。
  • 运行在各种各样的手机和平板上的由谷歌开发的基于Linux内核的Android操作系统。

移动市场如何被这两个巨人瓜分取决于如何看待它们:目前在使用的Android设备更多,但是iPhone和iPad用户在使用它们的设备上投入了更多的时间。
还存在第三种移动开发平台,它没有iOS和Android那样流行,但是牵涉到一家在个人电脑产业方面有辉煌历史的公司:

  • 微软的Windows Phone和Windows 10 Mobile平台。

近年来,由于微软已经将自家的手机,平板和桌面平台的API合并,使得它的平台成为更加吸引人的另一种选择。Windows 8.1和Windows Phone 8.1都是基于一个以Mcrosoft .NET为基础的被称为Windows Runtime(WinRT)的统一API。这个统一的API意味着面向台式机,笔记本,平板和手机的应用程序可以共享很多他们自身的代码。
更加具有吸引力的是Windows通用平台(UWP),一个构成Windows 10和Windows 10 Mobile基础的Windows Runtime版本。一个单一的UWP应用程序可以面向从台式机到手机的所有设备类型。
对于软件开发人员,最佳的策略是面向多个平台。但是那并不容易,主要存在四个大的障碍:

问题1:不同的用户交互模型

三个平台包含相似的方法来呈现图形用户界面和通过多点触控实现与设备的交互,但是在细节上他们有很多的不同点。每个平台都有不同的方式在应用和页面之间进行切换过渡,不同的数据显示协议,不同的方法调用和显示菜单,甚至不同的触摸方法。
特定平台上的用户会习惯于不同的与应用程序交互的方式,同时希望未来的应用程序也可以适用于这种方式。每个平台具有与自身相关联的文化,而这些约定俗称的规定会影响开发者。

问题2:不同的开发环境

如今的程序员习惯于在一个成熟的集成开发环境(IDE)上进行开发工作。这些IDE存在于三个平台中,但是很显然他们是不同的:

  • 进行iOS开发,使用Mac上的Xcode。
  • 进行Android开发,使用各种平台上的Android Studio。
  • 进行Windows开发,使用PC上的Visual Studio。

问题3:不同的编程接口

这三个平台基于具有不同API的操作系统。在很多情况下,三个平台具有相似的用户界面类型但是名字是不同的。
例如,三个平台都有一个让用户切换布尔值的控件:

  • 在iPhone或iPad上,是一种叫做UISwitch的“view”。
  • 在Android设备上,是一种叫做Switch的“widget”。
  • 在Windows Runtime API中,是一种叫做ToggleSwitch的“control”。

当然,它们在编程接口中的差别要远大于名字上的差别。

问题4:不同的编程语言

开发者在开发这三个平台的时候有一定的灵活性去选择一种编程语言,但是,通常每个平台会非常适用于用一种特定的编程语言:

  • Objective-C用来开发iPhone和iPad
  • Java用来开发Android设备
  • C#用来开发Windows

Objective-C,Java和C#在排序上是表亲关系,因为它们都是派生自C语言的面向对象的语言,但是它们已经变成关系相当遥远的远房表亲。
因此,一家想要面向多平台的公司可能需要雇佣三个不同的编程团队,每个团队具有一种特定语言和API方面的技能和专长。
这其中的语言问题尤其让人烦恼,但它是最有诱惑力去解决的问题:如果你能用同样的语言来开发这三个平台,你就能至少在平台之间共享一些代码。这些共享的代码可能不会涉及到用户界面,因为每个平台有不同的API,但是程序中很可能会有完全不触及用户界面的应用代码。
拥有一种适用于三个平台的语言一定会很方便。但是它将会是哪种语言呢?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容