一、对安卓、iOS、鸿蒙三个系统的理解 各自优缺点1. Android安卓理解Google主导的开源移动操作系统底层Linux内核上层应用层是Java/Kotlin开发采用Dalvik/ART虚拟机应用以APK包分发是开放生态。优点开源厂商可深度定制小米、OPPO等UI硬件选择多机型覆盖广。开发自由度高文件访问、权限管控相对宽松自定义能力强。适配各类芯片跨硬件兼容性好。缺点碎片化严重不同安卓版本、厂商定制ROM差异大适配成本高。应用后台管控各家策略不一样容易出现后台偷跑、内存占用波动。安全风险相对更高来源不明APK容易带来安全问题。低端机型性能表现差距大。2. iOS理解苹果闭源系统基于Darwin内核Mach微内核BSDApp用Objective-C/Swift开发没有虚拟机App编译为原生机器码App Store统一分发软硬件一体。优点软硬件深度绑定系统统一几乎不存在版本碎片化适配成本低。系统管控严格权限、后台、应用行为限制强稳定性、流畅度一致性好。内存管理、动画渲染优化成熟UI流畅度高安全机制更强。缺点闭源高度受限文件访问、后台能力、自定义能力弱很多系统能力不开放。开发、上架审核严格审核周期长很多功能做不了。硬件只有苹果自家设备硬件选择少价格高。3. 鸿蒙HarmonyOS理解华为分布式操作系统内核是微内核设计手机上目前兼容Linux内核做兼容层核心亮点是分布式软总线目标不是只做手机系统而是面向多设备手机、平板、手表、车机、IoT。支持ArkTS/ArkUI开发同时兼容安卓APK。优点分布式能力跨设备调用能力多设备协同流转跨屏、任务迁移是核心特色。微内核安全隔离性更强不同模块独立一个模块崩溃不会整系统挂掉。一套工程可以多端部署减少多端开发成本。兼容安卓APK生态可以平滑过渡。缺点生态相比安卓、iOS更小第三方库、SDK丰富度不足。设备覆盖量有限不同鸿蒙版本之间也存在适配工作量。分布式能力在普通手机App开发场景很多能力日常用不上开发学习成本偏高。二、安卓和iOS 在真正的运行机制上有什么不一样一句话核心安卓是应用跑在ART虚拟机上iOS是直接编译成CPU原生机器码没有虚拟机。Android内核Linux宏内核。所有系统服务都在内核空间模块耦合度高。应用层ART虚拟机APK里包含dex字节码。安装阶段做AOT预编译把dex转成机器码运行时还有JIT即时编译。每个App都是独立Linux进程拥有独立ART虚拟机实例。内存模型基于Linux的进程内存GC垃圾回收。Java/Kotlin对象由ART的GC管理GC触发的时候会STWStop The World暂停应用。UI渲染SurfaceFlinger负责合成图层。进程与后台系统会依据内存阈值来终止进程但不同厂商的ROM在后台策略上差异很大。权限采用动态权限机制不过厂商可能会对权限逻辑进行二次修改。iOS内核DarwinMach微内核 BSD。核心服务和驱动分离内核只做最基础调度大部分服务跑在用户态。应用AOT全量编译没有虚拟机。源码直接编译成ARM原生机器码Mach-O包安装包里面就是原生指令运行时不需要解释/转码。内存管理ARC自动引用计数不是GC。没有STW。靠引用计数对象引用为0就立刻释放循环引用需要开发者手动处理。UI渲染CoreAnimation渲染流水线和安卓不一样动画在渲染进程主线程阻塞动画依然可以保持流畅。进程与后台严格后台生命周期App退到后台很快被挂起只有少数授权后台模式音频、定位等允许短暂运行。权限App沙盒隔离极强每个App只能访问自己沙盒目录跨App访问文件非常受限。✅ 面试一句话总结运行机制差异 AndroidLinux宏内核 ART虚拟机字节码AOT/JIT混合GC垃圾回收每个App独立进程独立虚拟机。 iOSMach微内核 BSDApp预编译为原生机器码ARC引用计数沙盒严格后台管控非常保守。三、安卓和iOS 在运行效率上有什么不一样1. 代码执行效率iOS代码是原生机器码运行时没有虚拟机开销纯计算任务理论上限更高。ARC没有GC停顿不会出现STW卡顿。AndroidART已经AOT预编译大部分代码也是本地机器码但还有JIT、虚拟机运行时开销GC会STW内存大对象多的时候容易出现卡顿。现在新版本安卓ART优化很强在旗舰机上两者差距不大低端安卓差距明显。2. 内存效率iOS沙盒ARC内存释放及时系统对App内存配额管控严格内存吃满直接杀进程。Android每个App独立ART虚拟机本身占额外内存开销GC会造成内存抖动容易产生内存碎片。同样业务安卓App内存占用一般会略高于iOS。3. UI/动画流畅度iOSCoreAnimation动画在渲染进程执行主线程阻塞动画还能继续跑动画一致性很强。AndroidUI绘制在主线程主线程阻塞就掉帧虽然有Choreographer帧同步但碎片化导致不同机型渲染表现不一致。高端安卓现在可以做到和iOS接近但中低端机型容易卡顿。4. 后台效率iOS后台限制极强App后台大部分时间冻结几乎不消耗CPU但后台任务能力弱。Android原生后台能力更强但国内厂商ROM普遍强杀后台App保活难度高后台容易内存/电量偷跑。5. 启动速度iOSAOT编译二进制直接加载但签名校验、沙盒机制也有开销。Android需要加载ART、dex、资源冷启动天然多一层开销冷启动普遍比iOS慢一点不过现在Android App Startup、AOT优化已经缩小差距。✅ 面试一句话总结效率差异理论原生代码执行iOS更强无GC停顿安卓有虚拟机和GC开销容易内存抖动。但旗舰安卓硬件足够强时日常使用感知差距不大。差距主要体现在低端设备、长时间运行后的GC卡顿和冷启动。iOS优势在于流畅度稳定性安卓的痛点是碎片化带来的体验不一致。四、iOS、鸿蒙跟 Android 相比在系统 SDK 或 APP 架构设计上有什么不一样的理念哪些地方相似一句话总纲 iOS封闭统一、强管控优先保证体验一致性SDK是分层Framework页面以ViewController为核心 Android开源开放、组件化强调组件可跨应用调用四大组件为核心适配海量硬件 鸿蒙分布式优先一次开发多端部署Ability为核心SDK原生内置跨设备协同能力。1、SDK APP架构理念差异1. iOS底层是Darwin混合内核SDK是分层FrameworkCocoa Touch、Media、Core Services、Core OS整体设计是封闭生态优先系统强管控。APP架构核心是ViewController管理视图生命周期UIKit命令式/SwiftUI声明式。App是单入口、独立沙盒App之间隔离严格跨App能力受限。设计理念软硬件一体系统API版本统一减少碎片化SDK接口偏向稳定、少开放底层能力权限管控严格。语言Objective-C / SwiftSwiftUI是苹果主推声明式UI单向数据流。2. AndroidLinux宏内核Android SDK Jetpack扩展库开源开放组件互通是核心设计思想。APP架构四大组件Activity/Service/BroadcastReceiver/ContentProvider没有main入口系统AMS通过Intent拉起组件甚至跨应用启动组件、共享数据。设计理念适配海量不同厂商硬件版本碎片化严重JetpackViewModel、Compose用来抹平版本差异分离生命周期和业务状态。特点开放性强给开发者更多底层权限组件可以独立被外部调用是“组件可被外部调度”的设计。3. 鸿蒙HarmonyOS NEXTStage模型微内核方舟SDK原生面向全场景分布式超级终端设计这是和iOS/Android最大区别。APP架构核心是UIAbility对应页面能力、ExtensionAbility扩展能力ArkUI为UI框架ArkTS语言声明式UI为主。Ability和窗口解耦支持跨设备迁移、跨设备RPC调用。设计理念一次开发多端部署。SDK原生就提供分布式软总线、设备发现、跨设备资源调用APP组件本身可以在手机、平板、车机、手表流转。元服务免安装卡片这是iOS/Android没有原生支持的形态。核心差异一句话iOS/Android是单设备移动系统鸿蒙是全场景分布式系统APP架构天生就考虑多设备协同。2、三者相似点分层架构、分离关注点三者官方都推荐分层架构UI层、业务层、数据层推荐MVVM/MVIUI和业务逻辑解耦不要把业务写在页面组件里。两套UI范式并存命令式 声明式iOSUIKit(命令式) / SwiftUI(声明式)AndroidXML布局(命令式) / Jetpack Compose(声明式)鸿蒙早期HML(CSS/JS) / ArkTS声明式 现代SDK都在主推声明式UI状态驱动视图数据变更自动刷新UI。沙盒隔离、权限模型每个App独立沙盒默认不能随意访问其他App数据敏感能力相机、定位都需要运行时动态申请权限。组件生命周期由系统托管页面组件ViewController / Activity / UIAbility生命周期都由系统管理内存不足时系统会主动回收组件开发者需要处理状态保存、重建。SDK模块化提供基础系统能力网络、存储、多媒体、传感器、图形渲染、通知等基础能力都封装在系统SDK不用开发者裸操作硬件。现代架构都推崇单向数据流、状态管理减少UI与业务的耦合提升可测试性。3、面试加分小结iOS一致性优先封闭生态沙盒强隔离ViewController驱动页面Android开放性优先组件可跨App调用四大组件模型需要兼容大量设备鸿蒙分布式优先Ability模型原生支持跨设备流转一套代码跑多终端相似的趋势都在往声明式UI、分层架构、状态驱动演进把页面生命周期和业务状态解耦。五、iOS端的系统层面强管控受限于哪些机制设计iOS 的系统强管控主要依托这几大机制沙盒机制每个App独立沙盒默认只能访问自身目录跨App数据共享只有系统提供的有限通道。代码签名校验所有可执行文件必须签名内核加载时校验禁止运行篡改、未签名二进制。Entitlements 能力固化高级能力打包签名时就绑定不是运行时动态申请没有对应授权API直接调用失败。严格后台管控App退后台很快被挂起仅少数后台模式需要对应entitlement且审核通过不能无限后台运行。Mach内核进程隔离每个App是独立task虚拟内存保护App无法直接操作物理内存。有限IPC与私有API限制普通App难以自建跨进程RPC私有API禁止使用跨App拉起能力受限。一句话总结从安装校验、进程隔离、数据隔离、后台执行、能力开放多层约束保证系统稳定和体验统一牺牲了开发灵活性。和Android相比Android是运行时权限为主App间IPC更开放iOS很多特权在打包阶段就锁死。
阅读完成 · 觉得有帮助?