Android和iOS那个好?
应该先往哪个上面投入资源?
多次被人问到此类问题,笔者刚好自己的项目也需要考虑iOS版本。就索性进行了一番调研,于是有了本文(本次不讨论越狱的iOS)
首先从情感上,你喜欢哪个就好,就像百事可乐和可口可乐,当然这个比喻不是很恰当,因为可乐喝起来几乎一样,但是Android和iOS还是有很大差别的。
iOS来源于Apple的OSX,是UNIX系统,OSX已经有差不多10年的历史,从内核底层到软件架构都是逐步发展过来的。iOS使用ObjectivC这个古老的语言来做开发。而Android是Google基于Linux搞来的,严格意义上讲Android并不是一个Linux系统,它没有Linux的xwin,没有glibc,缺乏一整套标准的Linux程序。Android应用绝大部分都是使用JAVA开发,跑在Dalvik虚拟机上(一小部分使用NDK)。 Google在底层也修改了很多东西。Android算是一个全新的操作系统. 所以:
Android使用JAVA,上手容易很多,如果有很好的JAVA Lib加持,开发效率会高些
iOS没有虚拟机, 也没有GC,性能要好一些,当然这个差别会随着Google的改进越来越小
iOS的开发框架很成熟,而且和MAC上通用,同样的知识体系,也可以开发MAC应用,Android相比是全新的框架, 还会继续进化.
iOS和设备紧密集成。软硬件一家公司通吃。但是Android无法做到, 通常的情况是:Google放出源代码。 芯片厂商需要1-3个月来做自己的芯片方案, 手机厂商从芯片厂商处买到方案和代码, 进行自己的集成,定制工作,有时候还需要针对运营商进行定制。 所以:
iOS的设备集成度和驱动优化都是最好的。电源管理一块就可见一斑,而Android厂商就鱼龙混杂。可能排头的厂商的旗舰机器会好些,但是由于Android工期一般都比iOS设备短(请看HTC和三星出机器的速度),所以整体上和iOS比是有差距的。
Android天然存在升级周期延迟的问题, 而且厂商做升级是也是有成本的。卖手机的厂商无法顾及整个生态链,目前这个无解,除非Google做点什么。
由于有多家厂商自己做定制,Android还存在设备的分裂问题(fragmentation), 作为过来人,我告诉你这个是很头痛的事情, 且不论调试时间和人力, 光买一大堆设备的成本就不小。最关键的是它会伤美工/UE的心。
iOS是被Apple严格控制的系统。 在大部分情况下, 第三方应用是无法拿到所有API的。 这意味系统级别的很多功能只有Apple能做(比如打电话,拦截短信)。此外一些涉及用户隐私的API还会导致系统弹出对话框询问用户。 同样第三方runtime做应用开发也是基本不可行的(Flash当初也是被这个条款拒过)。 反过来Android完全不一样,首先Android是开源的,在设计上Android就允许自由替换系统组件, Android也没有强制限制API的情况,(hidden API也可以call,没有人会找你麻烦)。 系统级别的权限是下放到厂商手中,如果厂商愿意给,那第三方开发者就可以做任何事情。 普通应用的权限认证也是在安装的时候就一次性授权完成。 之后不会骚扰用户。所以:
Android平台可以做的事情远远比iOS多, 你可以做电话管理,地址簿,短信管理,可以自己跑后台service。 替换掉系统的组件非常容易
Android平台也可以跑其他系统的Runtime, 比如Flash, 有了NDK, 你要自己接入一个虚拟机也是可能的。Google不会管你
任何人可以拿Android自己改个独立的系统出来,也许这样做的意义和前景有问题,但是同样,没有人限制你
iOS上唯一的下载应用途径就是Appstore,开发者做应用上线还要通过Apple审核,就算通过了,如果挂羊头卖狗肉乱来或者调用了不该用的API, Apple一样随时可以下架。管理非常严格。反过来Android上非常松懈:
厂商可以内置应用。经常会扔一些莫名其妙的软件预装在手机上, 笔者在厂商的时候深刻体会到乱选软件是很好玩的事情。而且我们不会让你删除掉的。
Google的官方菜市场不做应用审核,开发者上传软件很随意,这是个自由市场。
国内还存在大量第三方软件菜市场。以及豌豆夹类似的PC端管理软件。
如果用户选择允许“未知来源”,那么通过web下载或者安装卡上的软件也是可以的。似乎国内用户都是允许的。所以:
iOS上的精品软件多,竞争激烈但管理有序,开发者也容易挣钱。
Android上虽然也有精品软件,但是垃圾软件更多, 甚至有恶意软件。 因为无门槛,基本上软件都是免费,卖不起钱, 大部分都靠广告。
Android还有一堆杀毒软件,这是典型的“没有困难,制造困难也要上”的精神。
Android上还有一堆安慰剂软件,比如能帮你省电的或者是帮你杀后台进程的来提升性能的, 笔者作为做过底层开发的人,笑而不语。
写了这么多分析, 结论呢? 事实上你是什么样的角色,决定了用谁更好。
如果你是普通用户,请关贴, 本文不是用来给普通用户选机的。
如果你是一个个人软件开发者, iOS适合你, 市场规范, 做应用省心。
如果你是一个软件和服务的创业公司, iOS也是适合你做demo的和第一个产品的, 产品靠谱了,用户在用了,有人给钱了,再往Android走也是可行的。 除非你做的应用要涉及硬件或者需要非常高的系统权限, 如果是那样你也只有选择Android。因为国内的厂商肯定要比苹果要容易谈下来。
如果你是一个要做硬件和系统定制的公司, 那么基本上你只有Android可以选。Android的解决方案的成本也在不断下降。
如果你是一个有中国特色的公司,想搞点移动业务玩玩, 还要瞒着用户做很多事情。 那么Android也是更好的, 就算你不作恶, 控制权在自己手中也会方便运作一点。
分享到:
相关推荐
【iOS与Android比较】 iOS和Android是两大主流的移动操作系统,它们各有特色,适用于不同的用户群体和需求。从软件硬件的结合、设备数量、开发难度和技术制作工艺等多个方面,我们可以深入探讨这两个系统的差异。 ...
【iOS与Android比较】 iOS和Android是两大主流的移动操作系统,它们各有特色并主导着智能手机和平板电脑市场。iOS由苹果公司自主研发并应用于其iPhone、iPad等设备,而Android则是Google开发的开源操作系统,被广泛...
与iOS类似,Android版本的插件同样支持后台操作,确保了用户体验的连续性。 在使用Bluetooth LE for iOS and Android v2.3时,开发者需要注意以下关键点: 1. **设备配对和连接**:在扫描到BLE设备后,开发者需要...
Delphi XE8 iOS与Android移动应用开发教程[完整中文版] Delphi XE8 是一款功能强大且灵活的移动应用开发工具,能够帮助开发者快速构建高质量的移动应用程序。以下是 Delphi XE8 iOS 与 Android 移动应用开发教程的...
Delphi XE8 iOS与Android移动应用开发(APP开发)[完整中文版],这是一本不可多得的介绍使用delphi xe8开发iOS与Android移动应用的电子书,实用的技术开发教程与技术开发手册。 Delphi XE8跨平台开发让你使用一套...
总结来说,"Bluetooth LE for iOS and Android v2.3.unitypackage"为Unity开发者提供了一套完整的BLE解决方案,通过它,开发者可以轻松地将Unity项目与各种BLE设备连接,实现跨平台的物联网功能。在实际开发中,理解...
### Delphi XE8 开发 iOS 和 Android 移动应用知识点总结 #### 一、Delphi XE8 概述 - **RAD Studio**: RAD Studio 是 Embarcadero 公司旗下的集成开发环境 (IDE),它支持多种编程语言,包括 Delphi、C++Builder ...
这是针对iOS,tvOS和Android的蓝牙低功耗(BLE)的非常简单的功能实现。点击创建BLE中央管理器以访问蓝牙功能。此插件可用于游戏和任何其他Unity应用程序。 包括连接到RFduino和TI SensorTag设备的示例,还包括来自...
"Axure IOS & Android部件库"是专门为iOS和Android平台设计的一套组件资源库,包含了这两个操作系统特有的控件和界面元素,从而极大地提高了设计师的工作效率。 首先,我们来看标题中的“Axure IOS & Android部件库...
"iOS与Android通用AES加密"是一个针对这两个主流操作系统实现的数据加密方案,确保信息在传输和存储过程中的安全性。 AES(Advanced Encryption Standard),即高级加密标准,是一种广泛使用的对称加密算法,因其...
在长按与3DTouch方面,iOS的长按功能比较单一,通常用于选中文字、调整光标位置、桌面长按App图标进行排序或删除等。Android除了这些功能,长按还经常用于列表项的多选和上下文操作,使用频率非常高。此外,iPhone ...
使用ncnn在ios+android上部署yolov5源码+详细说明.zip使用ncnn在ios+android上部署yolov5源码+详细说明.zip使用ncnn在ios+android上部署yolov5源码+详细说明.zip使用ncnn在ios+android上部署yolov5源码+详细说明.zip...
判断客户端是iOS还是Android 在前端开发中,判断客户端是iOS还是Android等移动终端是非常重要的。通过JavaScript可以实现这种判断。下面是相关知识点的总结: 一、判断浏览器类型 在JavaScript中,可以通过两种...
这篇内容将详细介绍如何在iOS应用中创建一个简易的ViewPager,以达到与Android平台上ViewPager相似的用户体验。 首先,我们需要理解Android的ViewPager是如何工作的。在Android中,ViewPager是一个可以展示多个页面...
本工程可以直接使用,而且与IOS,Android,JAVA,.NET 已调通。 主要用于客户端进行通信,数据之间地安全性。对数据进行加密和解密 AES加密有多种算法模式,下面提供两套模式的可用源码: 一、CBC(Cipher Block ...
在IT行业中,跨平台通信是常见的需求,尤其是移动设备(如iOS和Android)与服务器之间的交互。本场景中,PHP被用作服务器端语言来处理客户端(iOS和Android)上传的图片。以下是对这个主题的详细说明: 1. **PHP...
Delphi是Embarcadero Technologies公司旗下的一款集成开发环境(IDE),它允许开发者使用相同的源代码库来开发跨平台的应用程序,支持Windows、macOS、Linux、iOS、Android等平台。Delphi XE8是Delphi的一个版本,该...
在iOS和Android平台上实现AES加密解密是开发者经常遇到的任务,尤其对于需要跨平台传输和存储敏感信息的场景。本篇文章将详细探讨AES加密解密算法在iOS和Android平台上的实现原理以及具体步骤。 首先,AES算法基于...
两个插件,1.FiddlerCertMaker.exe 抓包工具的证书生成器,2.在用于手机端抓包出现443的情况,如捕获https链接时出现443的情况下,则需要使用官方证书插件辅助CertMaker for iOS and Android