资讯专栏INFORMATION COLUMN

Android与iOS的对决

Moxmi / 270人阅读

摘要:开发环境赞扬了苹果的,它让人开发起来很愉悦。也非常不喜欢苹果在大约一年前增加的多屏故事板。而在更广泛意义上的分享上,苹果领先很多。发布一款苹果应用则是噩梦。你最终会为强大的苹果有多糟糕而深感震惊。

Android的市场份额已经超过80%了,在这一背景下,创业公司永恒的问题“Android优先还是iOS优先”愈显棘手。不过也许经理们和非技术出身的创始人们不用操心这个问题,他们可以把这个烦心的问题交给开发者们!那开发者们是咋想的?很简单,谁能让他们更轻松,谁就能获得巨大的优势。

Techcrunch的专栏作者Jon Evans,同时也是HappyFunCorp(是不是很羡慕这个咨询公司的名字?)的工程师,为了让自己不手生,Evans编写并开源了两个私人宠物项目。这是近乎一模一样的Android和iOS应用。Evans以这两个应用为例,比较了Android和iOS的差异。

Evans之前编写了很多Android和iOS应用,有私人项目,也有工作项目。上面提到的两款应用都是原生应用,为Evans开发的新闻聚合器Scanvine编写。Scanvine可以识别出在社交媒体中分享得不同寻常之多的故事。两个应用的源代码放在Github上:( Android | iOS),可以通过Google Play或App Store)安装。

开发环境

Evans赞扬了苹果的Xcode,“它让人开发起来很愉悦”。Xcode漂亮、快速、强大,帮人而非扰人。Xcode的调试工具运行平滑,模拟器反应很灵敏。

Android则让Evans很失望。目前Android最先进的IDE是用Android插件定制的Eclipse,很糟。迟钝、笨重、反直觉、布局糟糕、不必要的复杂,简直就是一团糟。调试工具也非常笨拙,迫使Evans在大部分时间通过日志进行调试,和XCode的调试工具有天壤之别。Android的模拟器也慢得很,要花几分钟才能启动,其中差不多有一半时间没法连接到Android Debug Bridge。

公平地说,Google也知道这是一个问题,他们正在着手制作一款新的IDE,叫做Android Studio。不过Android Studio目前仅仅提供先期预览版。很多功能不完整或者干脆没有。用户有时也会遇到错误。

优势:iOS甩了Android几条街。

配置

Evans指出,在Xcode和Objective-C漂亮、无缝的外表之下,隐藏着一堆麻烦:宏和头文件、项目、目标代码以及构建配置,等等。繁多的构建设置列表,令人困惑的链接器错误,让人绝望。时不时还会有些“惊喜”:“天,这个第三方代码居然不支持ARC?得加上-fno-objc-arc标记!”。

Android的配置文件只有一个,每当开发者保存一次文件,Eclipse就会构建一次应用。当然,在因配置授权不当而导致应用不工作时,错误消息少了点。不过这只是细节,总体来说,Android的应用配置简单且简洁。

优势:Android。

UX设计

Xcode的界面搭建器能非常迅速地将简单、漂亮的用户界面以一种非常赏心悦目地方式组织在一起。问题是,这又加了一层配置复杂度。对于简单应用而言,很好,但随着时间推移和应用发展,这些简单的东西会变得复杂、混乱。Evans也非常不喜欢苹果在大约一年前增加的多屏故事板。

理论上,Android有一个可比肩的可视化工具,不过这只是理论上而已。实际情况是,你需要编写提供布局指导的XML文件,以便让应用在多种设备的多种屏幕上渲染得很好。(苹果的自动布局也走这条路,应该是为未来出现的更多尺寸的iOS屏幕作准备)同时,Android提供了一个图标包供开发者们使用,而iOS开发者们则必须使用Icons8等第三方服务或自己制作。

总的来说,这方面的差距要比想象中的小。总体来说,两样东西让iOS占据优势:首先,Xcode要简单的多:只有三种屏幕尺寸(包括iPad)和两种屏幕密度,而不像Android一样复杂。其次,默认的iOS视觉元素,比如弹出目录和消息,看起来要比Android吸引人得多。

优势:iOS。

语言

Android应用使用Java编写,iOS应用则使用Objective-C。当然你也可使用其他工具,以便使用其他语言,比如Evans推荐的xamarin,还有PhoneGap之类。不过总的来说,原生Android应用使用Java编写,原生iOS应用使用Objective-C编写。

Evans起初觉得Objective-C非常啰嗦:比如语句

String s2 = s1.replace(“abc”,”xyz”);

在Objective-C中变成了

objective-c NSString *s2 = [s1 stringByReplacingOccurrencesOfString:@"abc" withString:@"xyz"];

不过后来Evans越來越喜欢Objective-C了。Objective-C比Java更整洁。Objective-C有block,Java没有。Objective-C有category,Java也没有。ObjC 不需要你把很多代码用一望无际的 try/catch 异常处理空行围起来; Java 需要.

Java也有其优势。比如更好的堆栈跟踪(stack trace),这让追踪零星的错误变得更容易。两年前,Android还有垃圾收集的巨大优势,但现在iOS有了ARC,这一优势就消失无踪了(尽管老的第三方工具通常不支持ARC,开发者必须进行一些XCode配置,才能关闭ARC)。考虑到iOS的这一进步,赢家就很明显了。

优势:iOS。

API

Android和iOS都向开发者们提供了庞大的软件库。从宏观上看,这些库都很相似:有针对手机功能、网络访问功能、包括强大的WebView在内的View对象的API。绝大部分工作都是由控制器完成:iOS的ViewController差不多就相当于一个Android Activity。

iOS有而Android没有的是一套额外的框架和功能,比如Android就没有iOS强大的Core Data框架的对应物,也没有iOS那样更整洁、更好的设计系统。比较这两个应用中起到相同作用的类,Evans在Android类上花的时间比在iOS类上花的时间要多。

至于代码行数。这两款应功能近乎一样,但iOS应用的自定义代码有1596行,包括头文件;而Android应用的Java代码和XML代码加起来有2109行,多了32%多。

优势:iOS。

网络

如今大部分应用都使用互联网API,而不是多带带的程序;这点非常重要,值得拿出来单说。iOS和Android都为此提供了全套工具和API。它们都提供了非常相似的WebView,基本上就是功能齐全的浏览器,开发者可以在应用中任何地方插入。

网络连接基本上都是在后台运行,以便不堵塞主线程,不过多线程不好处理。Android提供AsyncTask类来做这类事,虽然很啰嗦,但效果很好,而且判断是否联网也很方便。iOS也提供类似的功能,可惜它们的表现相当低级,不能让人满意。

不过,有一堆开源库让生活变得轻松多了。Evans用的是AFNetworking,感觉非常好。只需在网络请求完成后将代码块传递给它就能运行,这在Android中根本不可能,因为Java没有block。

优势:原生Android有优势,但考虑到第三方库时iOS有优势。

分享

从应用中分享东西到Facebook、Twitter、Evernote等服务上有多容易?Evans曾经以为Android会完胜iOS。长期以来,Android就有一个名为Intents的强大的应用间通讯系统。总体上说,Android在应用间请求并分享数据上要好很多。

而在更广泛意义上的分享上,苹果领先很多。具体可以看Evans的项目中分享Scanvine故事的Android代码和iOS代码。

优势:都不够好。

碎片化

这一问题根本不用多说,答案当然是iOS胜出。值得注意的是,Google正进行一项有趣的去碎片化战略,也许很快这一点就需要重新探讨了。

优势:iOS。

发布

发布一款Android应用非常容易。只需要用一个方便的Eclipse向导来签名应用,你就会得到一个可以在任何设备上运行的APK文件。可以用电子邮件发送,可以传到网站上,当然也可以上传到Google Play中,你可以在一小时内向全世界提供你的应用。不能再简单一些了。省下来的时间你可以用来检查安装数据和崩溃报告,包括查找有问题的代码,并能立即上传修复错误的版本。

发布一款苹果应用则是噩梦。Evans建议留出至少一天的iOS开发时间来解决证书和发行档案问题。尽管最新版的XCode试图让这一过程变得更容易,但这始终是个很大的困扰。如果没有TestFlight,测试甚至会更糟。苹果的iTunes Connect网站比起Google Play开发者终端就像福特之于特斯拉。基本上你收不到苹果应用的崩溃报告,收到了里面也不会有什么有用的信息,你只能自求多福。你最终会为强大的苹果UX有多糟糕而深感震惊。

优势:Android领先很多。

那么赢家是?

iOS要领先很多。Android有其优势,但总的来说,编写好的iOS应用要比编写好的Android应用容易得多。加上iOS用户更有钱,更有影响力,大部分想要闯出名头的创业公司还是应该以iOS为先。新的Android Studio IDE也许会极大地缩短差距,但并不是全部。

Jon Evans的原文(英文)

本文由SegmentFault编译整理。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/12011.html

相关文章

  • AndroidiOS对决

    摘要:开发环境赞扬了苹果的,它让人开发起来很愉悦。也非常不喜欢苹果在大约一年前增加的多屏故事板。而在更广泛意义上的分享上,苹果领先很多。发布一款苹果应用则是噩梦。你最终会为强大的苹果有多糟糕而深感震惊。 Android的市场份额已经超过80%了,在这一背景下,创业公司永恒的问题Android优先还是iOS优先愈显棘手。不过也许经理们和非技术出身的创始人们不用操心这个问题,他们可以把这个烦心的...

    13651657101 评论0 收藏0
  • fir.im Weekly - 人人都需要 IT 技能图谱

    摘要:作为人类,在未来能否保全最后的智力骄傲成为一个疑问。地址,还在持续更新,也许你需要一份。不要写死天猫的动态化配置中心实践由移动开发前线微信分享。作者这篇文章和大家,聊了下手机天猫在配置动态化上的心路历程。 AlphaGo 与李世石的人机世纪大战落下帷幕,不禁让人思考《失控》 中说道的 机器正在生物化,而生物正在工程化 。作为人类,在未来能否保全最后的智力骄傲成为一个疑问。而当下,正确敏...

    Barrior 评论0 收藏0
  • Android进阶 - 收藏集 - 掘金

    摘要:技术创新深度研仿京东天猫的商品详情页的布局架构以及功能实现掘金前言电商内,重点在于详情页商品展示,用户不仅要看到图,可以看到各种描述,以及相关规格参数。项目需求讨论推送及启动方式掘金图片上传中。。。 一款完整的外包资讯类 App - Android - 掘金外包集中营 整合多个软件外包平台项目信息,替你筛选优质项目 ... Android 中线程池的使用 - Android - 掘金...

    yankeys 评论0 收藏0
  • AI Challenger开赛,千万量级数据开放,AI高手将上演巅峰对决

    摘要:月日,各项竞赛的排名将决定最终的成绩排名。选手通过训练模型,对虚拟股票走势进行预测。冠军将获得万元人民币的奖励。 showImg(https://segmentfault.com/img/bVUzA7?w=477&h=317); 2017年9月4日,AI challenger全球AI挑战赛正式开赛,来自世界各地的AI高手,将展开为期三个多月的比拼,获胜团队将分享总额超过200万人民币的...

    Ali_ 评论0 收藏0
  • 关于移动BI你不可不知东西

    摘要:移动是一个很大的话题,本文就来谈谈关于移动你不可不知的东西。移动设备的出现彻底改变了人们在移动设备上使用数据的方式。 只要有手机就能活的现代社会,你还在电脑面前看报表?移动BI可将报告和数据转换为移动仪表板,并将它们即时传送到任何移动设备。越来越多的企业开始重视移动BI,并将其作为企业IT战略的一部分。移动BI是一个很大的话题,本文就来谈谈关于移动BI你不可不知的东西。 727049-...

    CloudDeveloper 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<