Android处理器生产厂商较多,其中高通、华为、三星等较为主流,华为、三星芯片和Apple公司同样采用自研自用,而其他国内手机厂商如小米、oppo、vivo等虽然占有一定国内市场,但不具备自研芯片的技术能力,需要从高通、联发科等厂商购买,再进行相应的操作系统的设计开发,受限于处理器的核心技术。处理器在设计、生产的过程中,难以真正做到软硬件协同设计开发,需要兼顾不同厂商;同时,操作系统的设计开发是在已有处理器、无法对处理器进行再设计的情况下进行。

2.3 总结

iOS和Android操作系统生态圈大相径庭,iOS系统是基于Apple公司自研处理器A系列进行的开发设计,由于处于“同一屋檐下”,软件系统同硬件系统的协同设计得以更好的进行,使得iOS系统更适合A系列处理器的同时,A系列处理器也更适合iOS系统,符合嵌入式系统设计的理念;反观Android生态,除了华为、三星等厂商,其他厂商通过购买高通、联发科等处理器厂商的芯片,在其基础上进行各自操作系统的设计,在面对处理器既定的情况下,操作系统设计只能屈服于兼容、性能等一系列问题,而处理器厂商也不得不屈服于开发出更普适的处理器,这使得部分Android手机厂商从起步就落后于Apple公司,核心技术必须握在手里。但并不是所有Android移动终端厂商都低人一等,华为,国人更愿意称之为“国产之光”,麒麟系列芯片已经占据了部分市场,同高通、苹果等同争天下,在其基础上搭建的系统而逐渐得到认可。

3 软件

搭建在硬件系统之上的便是软件系统,软硬件协同设计的思想一直是嵌入式软件工程所倡导的设计理念。单一的处理器,没有操作系统、软件应用放到用户面前,也只是块毫无价值的电路板。故在硬件基础上,从软件层面切入,分析对比两大阵营Android和iOS系统的区别,主要从框架、开发以及一些机制进行对比。由于嵌入式操作系统一直随着时代不断地更迭进步,所搜集资料仅能体现部分时期的特点对比。

3.1 框架

3.1.1 iOS系统框架
iOS系统是Apple公司开发的移动端操作系统,作为iPhone移动设备开发人员,所有开发工作都要依赖于iOS来完成。iOS全称iPhone OS(Operation System),它的第一个版本于2007年发布。一开始,该系统并没有被官方命名,直到2008年iPhone SDK发布,这一命名问题才得解决。iPhone OS来源于Mac OS,是一种类Unix操作系统,iOS系统作为软件应用程序与设备硬件的桥梁,应用程序首先与操作系统的接口通信,系统收到信息后再去与底层硬件实现交互从而完成程序要完成的任务。iOS操作系统架构分为四层,从下到上依次为Core OS层、Core Services层、Media层和Cocoa Touch层。
图3-1 iOS操作系统架构图
其中,Core OS与Core Services为iOS系统底层接口。Core OS包含了电池管理、文件系统等服务。Core Services层包含了网络请求、数据库访问、浏览器、文件访问等。Media层主要是为应用程序提供对各类媒体文件的支持,图的绘制、多媒体的播放以及动画等特效。Cocoa Touch层位于最顶层,为整个系统提供程序所使用的各类基础框架,该层主要功能是处理iOS设备上的交互操作,多为与界面相关的框架。
3.1.2 Android系统框架
Android系统平台是由Google公司开发出来的,其系统内核本身通过Linux内核,操作系统属于嵌入式。Android平台采用分层架构的思想进行设计,其架构从上到下共有四层,最上面一层是与用户交接的应用程序层(Application),然后是系统的逻辑运行的应用程序框架层(Application Framework),之后是支撑系统运行的系统库(Libraries)和Android运行时(Android Run-time),最底下一层是Linux内核(Linux Kernel)。
基于Android开发的应用程序都是通过Java程序语言进行设计实现的。每一个程序的运行都代表着系统一个进程的实现,Dalvik虚拟机里面的每一个实例都是进程的具体体现,Dalvik虚拟机可以同时运行多个进程实例,从而实现多个任务并行处理,此模式大大提高了Android操作系统的性能。
图3-2 Android系统框架图
其中,Linux内核层是实现Android平台软硬件融合的基础,其将硬件资源进行了屏蔽,并提供各种公共功能,以便为上一层提供相应服务,有助于提升应用效率。Android库层中,Dalvik虚拟机在运行时占用的资源很少,使得系统能同时运行多个VM,并且拥有较好的性能,平台的寄存器技术由谷歌自主研发,同时为了方便各项功能处理,平台提供许多方法供调用。该层通过一些重要的库文件,对系统起着服务支撑作用,通过将服务文件集中统一到系统底层可以让系统具备更强的兼容性,配合不同的硬件完成工作,其中最典型的就是NDK。在应用框架层时,首先需要获得开发权限,并以框架为工作重点,框架的使用可以实现组件复用,减少代码开发,提升开发效率。应用程序层,是系统的顶层,是直接面向于系统使用者的,Android移动操作系统的应用层包括了大量的应用程序,并利用系统底层的Dalvik虚拟机运行。

3.2 运行机制

3.2.1 iOS沙盒运行机制
图3-3 iOS应用程序在其沙盒中运行
出于安全考虑,iOS应用程序与文件系统的交互仅限于应用沙盒目录。在安装新应用期间,安装程序会为沙盒目录中的应用创建多个容器目录。每个容器目录都有特定的角色,捆绑容器目录保存应用的捆绑包;而数据容器目录同时保存应用和用户的数据;数据容器目录进一步划分为多个子目录,应用可用于排序和组织其数据;该应用还可以请求在运行时访问其他容器目录。
意味着在没有用户授权的情况下,iOS应用程序仅能在自己的沙盒读写文件,不可访问其他沙盒,不可进行相互通信。在访问其他沙盒内容时,需要发出请求,通过权限检测,只有满足条件才可完成访问。
3.2.2 Android虚拟机运行机制
Android采用虚拟机运行机制,Dalvik是Google公司自研设计用于Android平台的Java虚拟机,是面向Linux、为嵌入式操作系统设计的虚拟机,主要负责完成对象生命周期管理、堆栈管理、线程管理、安全和异常管理、垃圾回收等功能。Dalvik负责进程隔离和线程管理,每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行,有的Android应用的线程对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制。

3.3 后台机制

3.3.1 iOS系统“伪后台”
随着iOS 4的发布,iOS开始拥有多任务功能,按Home键后,程序转入后台以墓碑的形式保持在内存中,用户可快速恢复。iOS多任务界面列出的应用仅仅是近期使用过的,而并非真正在后台运行的程序。仅有特殊应用可以在后台真正运行,比如音频播放、VoIP类、newsstand、位置服务等。
iOS 7诞生,标志“伪后台”到“智能后台”的转变。手机锁屏后,后台应用很快被暂停,再次唤醒后,应用继续运行。Background Fetch使得应用在后台就可直接获得信息;Silent Remote Notifications使得当应用程序接收到消息后,即刻唤醒相应应用程序,使其后台获取信息,而后通知用户;Background Transfer service使得所有下载任务交给独立进程完成,下载可持续进行。
3.3.2 Android系统“真后台”
Android系统手机采用“真后台”,即同熟悉的Windows操作系统相似,将应用保留在RAM中,即Android所有软件在硬件条件许可的情况下,可以实现后台甚至多窗口模式。Android上的应用都是带有独立虚拟机的,即每打开一个应用对应会打开一个独立的虚拟机,每个应用具有自己的进程和内存空间,但需要更多的内存。

3.4 指令权限优先级

3.4.1 iOS系统ui指令
iOS系统中ui指令具有最高权限,ui渲染采用实时优先级IOS系统响应顺序依次为:Touch、Media、Service、Core架构[],即首先响应最顶层的Cocoa Touch,优先处理与用户相关的iOS设备上的交互操作,即用户触摸屏幕后iOS系统会首先激活屏幕,然后才是媒体、服务以及架构。
3.4.2 Android系统数据处理指令
Android系统的优先级响应层级则是Application、Framework、Library、Kernal架构,其最高权限指令为数据处理指令,而其ui渲染遵循传统电脑的主线程普通优先级,触摸屏幕后Android系统会首先激活应用、框架,然后才是屏幕,最后是核心架构。

3.5 开发

3.5.1 Objective-C
iOS编程语言为Objective-C,具有专一性强、效率高的特点;同时iOS系统优化较好,gcc编译出的代码被苹果专为iOS架构优化到了极致,无需虚拟机,执行效率较高[]。iOS产品的封闭性,底层硬件稳定、单一,使得其应用程序得以拥有极高的硬件利用率,保证了应用开发本身与硬件产品之间的完美结合。
3.5.2 Java
Android编程语言是Java,通用性强,但效率低;同时Android系统需要虚拟机执行,效率低。Android生态硬件变化相对频繁,开发成本较高,收益慢;同时为了兼顾通用,不得不向软硬件协同开发设计低头。

3.6 总结

iOS操作系统诞生、成长在闭源的“自家园地”,其具备较强技术能力,积累大量工程经验,使得其相较于开源的Android生态毫不逊色。不管是“沙盒机制”、“伪后台”,还是系统架构的响应优先级,都能体现Apple公司对于用户体验的各自细节处理以及其和硬件系统的完美协同配合的设计;具备自研处理器的技术基础,使得其后续的操作系统开发更具有专一性,可以通过Objective-C进行编程设计,gcc编译使得代码和底层硬件配合到极致,也深刻体现软硬件协同开发设计的理念,使得其程序直接搭建和运行在硬件之上,而非利用虚拟机。然而“闭源”也一定程度影响了iOS系统的发展,部分功能也饱受用户调侃、指责;过于注重“安全”,也能招来用户不满。
相比之下,Android系统的“开源”生态,导致其软件开发并非趋于专一性,而是兼顾了通用性,导致了效率的下降,同时硬件系统的种类繁多、更新频繁也一定程度影响了软件开发,Android系统更像是跑在虚拟机上。然而特点都是“双刃剑”,“开源”的生态也为Android系统的成长带来了无限生机,各种应用程序如雨后春笋,Android系统应用层得到了极大的提升,硬件种类多也为其提供了更多适配的硬件选择,日趋壮大的各大厂商也在健全安全机制、功耗机制等,功能全面性是iOS无法匹敌的。
打个比方,iOS系统自搭自建了完整的家族家园,Android系统拉帮结派各个家族共同完成家园建设。自搭自建自然使得家园更适合iOS系统家族中的每一个成员,同处于一个家族无需考虑利益你我之分,处理器更适合操作系统,操作系统更适合应用程序,但是自己搭建难免累,考虑不周。