Android与iOS的对决

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

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


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


Evans之前编写了很多Android和iOS应用,有私人项目,也有工作项目。上面提到的两款应用都是原生应用,为Evans开发的新闻聚合器Scanvine编写。Scanvine可以识别出在社交媒体中分享得不同寻常之多的故事。两个应用的源代码放在Github上:( Android | iOS),可以通过Google PlayApp 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非常啰嗦:比如语句


Strings2 = 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也许会极大地缩短差距,但并不是全部。

相关文章
|
6天前
|
存储 安全 Android开发
探索Android与iOS的隐私保护机制
在数字化时代,移动设备已成为我们生活的一部分,而隐私安全是用户最为关注的问题之一。本文将深入探讨Android和iOS两大主流操作系统在隐私保护方面的策略和实现方式,分析它们各自的优势和不足,以及如何更好地保护用户的隐私。
|
6天前
|
安全 数据安全/隐私保护 Android开发
探索Android与iOS的隐私保护策略
在数字时代,智能手机已成为我们生活中不可或缺的一部分,而随之而来的则是对个人隐私和数据安全的日益关注。本文将深入探讨Android与iOS两大操作系统在隐私保护方面的策略和实践,分析它们如何应对日益严峻的隐私挑战,以及用户应如何保护自己的数据安全。通过对比分析,我们将揭示两大系统在隐私保护方面的优势和不足,为用户提供有价值的见解和建议。
|
6天前
|
Android开发 Swift iOS开发
深入探索iOS与Android操作系统的架构差异及其对应用开发的影响
在当今数字化时代,移动设备已经成为我们日常生活和工作不可或缺的一部分。其中,iOS和Android作为全球最流行的两大移动操作系统,各自拥有独特的系统架构和设计理念。本文将深入探讨iOS与Android的系统架构差异,并分析这些差异如何影响应用开发者的开发策略和用户体验设计。通过对两者的比较,我们可以更好地理解它们各自的优势和局限性,从而为开发者提供有价值的见解,帮助他们在这两个平台上开发出更高效、更符合用户需求的应用。
|
15天前
|
安全 Android开发 数据安全/隐私保护
深入探讨iOS与Android系统安全性对比分析
在移动操作系统领域,iOS和Android无疑是两大巨头。本文从技术角度出发,对这两个系统的架构、安全机制以及用户隐私保护等方面进行了详细的比较分析。通过深入探讨,我们旨在揭示两个系统在安全性方面的差异,并为用户提供一些实用的安全建议。
|
7天前
|
前端开发 Android开发 开发者
探索Android与iOS的跨平台开发策略
在当今多元化的移动设备市场中,开发者面临着为不同操作系统设计应用的挑战。本文深入探讨了Android和iOS两大主流平台的跨平台开发策略。我们将分析使用Flutter、React Native等框架进行跨平台开发的优劣,并讨论如何克服各平台间的差异性,以实现高效、一致的用户体验。此外,文章还将提供一些实用的技巧和最佳实践,帮助开发者优化跨平台应用的性能和兼容性。
24 4
|
9天前
|
安全 Android开发 iOS开发
深入探讨Android与iOS操作系统的差异性
本文旨在通过对比分析Android和iOS两大主流移动操作系统,揭示它们在设计理念、用户体验、安全性、应用生态及系统更新等方面的根本差异。不同于传统的功能列表式摘要,本摘要强调了两大系统背后的哲学思想及其对用户日常使用的实际影响,为读者提供了一个宏观且深入的视角来理解这两种操作系统的独特之处。
|
8天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异和挑战
【10月更文挑战第37天】在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统扮演着主角。它们各自拥有独特的特性、优势以及面临的开发挑战。本文将深入探讨这两个平台在开发过程中的主要差异,从编程语言到用户界面设计,再到市场分布的不同影响,旨在为开发者提供一个全面的视角,帮助他们更好地理解并应对在不同平台上进行应用开发时可能遇到的难题和机遇。
|
8天前
|
存储 安全 数据安全/隐私保护
深入探索Android与iOS的隐私保护机制:一场没有硝烟的较量####
本文深度剖析了Android与iOS两大移动操作系统在用户隐私保护方面的策略与实践,揭示两者在设计理念、技术实现及用户体验上的异同。通过对比分析,旨在为读者提供一个全面而深入的视角,理解两大平台如何在保障用户隐私的同时,实现功能的丰富与便捷。本文不涉及具体产品推荐或品牌偏好,仅从技术角度出发,探讨隐私保护的现状与挑战。 ####
|
8天前
|
前端开发 Android开发 iOS开发
探索Android与iOS的跨平台开发策略
在移动应用开发的多元化时代,跨平台开发已成为开发者追求效率和广泛覆盖的重要手段。本文深入探讨了Android与iOS两大主流平台下的跨平台开发策略,分析了各自的优势与挑战,并通过实际案例展示了如何有效实施跨平台解决方案,以期为开发者提供有价值的参考和启示。
|
7天前
|
安全 Android开发 iOS开发
深入探讨Android与iOS的系统架构差异
本文旨在通过对比分析Android和iOS两大移动操作系统的系统架构,揭示它们在设计理念、安全性、应用生态及开发环境等方面的显著差异。我们将从底层架构出发,逐步剖析至用户界面层面,为开发者和科技爱好者提供一份详尽的技术参考。
17 1