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上非常松懈:

  1. 厂商可以内置应用。经常会扔一些莫名其妙的软件预装在手机上, 笔者在厂商的时候深刻体会到乱选软件是很好玩的事情。而且我们不会让你删除掉的。
  2. Google的官方菜市场不做应用审核,开发者上传软件很随意,这是个自由市场。
  3. 国内还存在大量第三方软件菜市场。以及豌豆夹类似的PC端管理软件。
  4. 如果用户选择允许“未知来源”,那么通过web下载或者安装卡上的软件也是可以的。似乎国内用户都是允许的。所以:
  • iOS上的精品软件多,竞争激烈但管理有序,开发者也容易挣钱。
  • Android上虽然也有精品软件,但是垃圾软件更多, 甚至有恶意软件。 因为无门槛,基本上软件都是免费,卖不起钱, 大部分都靠广告。
  • Android还有一堆杀毒软件,这是典型的“没有困难,制造困难也要上”的精神。
  • Android上还有一堆安慰剂软件,比如能帮你省电的或者是帮你杀后台进程的来提升性能的。

写了这么多分析, 结论呢? 事实上你是什么样的角色,决定了用谁更好

  • 如果你是一个软件开发者,  iOS适合你, 市场规范, 做应用省心。 
  • 如果你是一个软件和服务的创业公司, iOS也是适合你做demo的和第一个产品的, 产品靠谱了,用户在用了,有人给钱了,再往Android走也是可行的。 除非你做的应用要涉及硬件或者需要非常高的系统权限, 如果是那样你也只有选择Android。因为国内的厂商肯定要比苹果要容易谈下来。
  • 如果你是一个要做硬件和系统定制的公司, 那么基本上你只有Android可以选。Android的解决方案的成本也在不断下降。
  • 如果你是一个有中国特色的公司,想搞点移动业务玩玩, 还要瞒着用户做很多事情。  那么Android也是更好的, 就算你不作恶, 控制权在自己手中也会方便运作一点。

转载于:https://www.cnblogs.com/liyueting/p/6605406.html

Android 和iOS 比较相关推荐

  1. ios android安全性分析,Android与iOS的对比分析及Android安全技术的设计与实现

    摘要: 近年来科技的发展和进步极大的推动了智能手机的飞速发展,手机功能的日益强大使人们对其依赖度显著上升.作为与人们生活密不可分通讯工具,手机安全的重要性不言而喻.现如今,随着手机网络的迅猛发展和形形 ...

  2. Android和iOS那个好?

    Android和iOS那个好?   应该先往哪个上面投入资源?   多次被人问到此类问题,笔者刚好自己的项目也需要考虑iOS版本.就索性进行了一番调研,于是有了本文(本次不讨论越狱的iOS)   首先 ...

  3. 百度android 测试平台,集成百度活体检测(Android、iOS)

    更新记录 1.1.0(2020-06-18) 插件增加iOS版本 1.0.2(2020-06-08) 优化插件打包无法使用的问题 插件调用方法添加sound字段,表示是否开启声音,true为开启,默认 ...

  4. Android与iOS对比

    最近有并行开发Android与iOS端App,想在这总结一些两种开发的相似与区别. 转载于:https://www.cnblogs.com/stuwan/p/6475725.html

  5. java与ios的区别_好奇?Android与iOS究竟有什么区别?终于知道了!

    智能手机系统的发展从如今的百花齐放在到三足立鼎,而发展到了现在则是安卓与ios两家平分天下.谁的系统好用?到底是IOS好呢,还是安卓系统好呢?至今没有一个结果.那么Android与iOS到底有什么区别 ...

  6. flutter 调用原生安卓插件_Flutter 如何调用Android和iOS原生代码

    分3个大步骤: 1.在flutter中调用原生方法 2.在Android中实现被调用的方法 3.在iOS中实现被调用的方法 在flutter中调用原生方法 场景,这里你希望调用原生方法告诉你一个boo ...

  7. weex Android 空白,Weex H5显示正常,android和ios皆显示一片空白,为什么呢?

    一个步骤条组件,分为两个模块,一个为 Step-Item,一个为 Step,代码如下所示. {{ currentStepNumber }} {{ title }} {{ description }} ...

  8. flutter 调用原生安卓插件_Flutter 如何调用Android和iOS原生代码-阿里云开发者社区...

    分3个大步骤: 1.在flutter中调用原生方法 2.在Android中实现被调用的方法 3.在iOS中实现被调用的方法 在flutter中调用原生方法 场景,这里你希望调用原生方法告诉你一个boo ...

  9. Cocos2dx 复制文本到剪切板(Android 和 ios)

    Cocos2dx 复制文本到剪切板(Android 和 ios) 至于c++调用java lua调用java 等方法这里不介绍了.下面本人真机亲测.如果有问题请留言交流. 1.Android 实现方式 ...

  10. android rebound平移,Android 仿 IOS 拖拽回弹之进阶 ReboundFrameLayout

    Android 仿 IOS 拖拽回弹之进阶 ReboundFrameLayout 前言 IOS 拖拽回弹给用户的体验不得不赞然后 Android 原生的 API 各种不支持, 于是乎出现的很多仿 IO ...

最新文章

  1. 女朋友羞辱我一线程序员35岁后没出路?该回二线发展!我没忍住,吼她两句!我错了吗?...
  2. Linux 下使用 Sar 简介
  3. VC6 + OpenCV1.0实现图片缩放显示
  4. 三元组法矩阵加法java_计算机视觉学习笔记(2.1)-KNN算法中距离矩阵的计算
  5. 【转】掌握Azure订阅的关键概念和术语
  6. mysql 备份如何使用_如何使用命令来备份和还原MySQL数据库
  7. xercesimpl做什么用的_一体化泵站是用来做什么的有什么用
  8. .NPT 扩展名格式文件类型及打开方式分析:首次渗入 XR 内容领域
  9. 类的加载器ClassLoader及其示例
  10. 微信内置浏览器不支持 onclick 如何解决?(原因是因为内面中的内容或者标签大部分是动态生成的)...
  11. win10下乌龟git安装和使用
  12. [bzoj3197][SDOI2013]assassin
  13. 12款常用的Web服务器软件整理(windows+Linux)
  14. python抢红包 无需电脑_Python助你秒抢红包,拼手速?不存在!
  15. 计算机中ppt,计算机中的数.ppt
  16. oracle sparc 服务器系统,oracle sparc服务器基础及管理.pdf
  17. 多个地点按距离远近进行排序
  18. 我的世界服务器的自动门怎么做,我的世界自动门怎么做
  19. 微信订阅号申请流程及准备材料
  20. graphpad画生存曲线怎么样去掉删失点_Graphpad Prism 绘制散点图

热门文章

  1. 如何能把 fastdfs-client-java的jar包安装到本地的仓库中
  2. 华为交换机接口允许vlan通过_VLAN工作原理之TRUNK:控制允许通过的VLAN(Allowed List)...
  3. 计算生物学_01机器学习理论部分
  4. serviceFabric oracle,Oracle ASM和多路径软件的兼容性【转】
  5. 大数据只做三件事,对用户的理解、对信息的理解、对关系的理解
  6. 数据结构c语言描述第课后答案李学刚,数据结构(C语言描述)(第2版)
  7. 表情识别(三)--基于几何与Gabor小波的多层感知
  8. Vue cli3使用vue-awesome-swiper
  9. 学习 springboot 中出现的问题
  10. 内存表与 InnoDB表对比