android android app下载

阿里妹导读:现实工作中经常可以听到这样的说法:框架的升级带来协议性能的提升、编程模式的变革带来业务的飞跃...... 姑且不论这些表述是否有问题,实际上如果系统地看待事物整体,可能会有不一样的发现 。以LINUX为例,尽管其内核大获成功,但如果不是遵循POSIX、并成为一个开源、精简的UNIX实现,很难想象其最终会有何种发展 。因此,对事物进行全局和一定深入的探究有时会有更多启发 。
今天,阿里高级无线开发专家所为将结合自己多年的经验,为你深入阐述整个 Android 技术域及移动研发生态,期待与大家共同探讨 。
1. Android设计的现实意义架构的工程意义在于:定义并解决一类问题,为需求到实现的平稳过渡提供保障 。传统意义的Android架构(图1)已被人熟知,但不同角色的视角不同,例如认为Runtime和框架是其核心、或者将Android看做是一种特异性JVM平台、还有从嵌入式出发将其看做是Linux…… 实际上,Android是极少数几个用设计来解决自身发展问题的系统,其核心在于通过硬件抽象、组件化、接口层三种能力来为发展提供基础,并为诸多变数预留大量可操作、斡旋的空间 。

android android app下载

文章插图
图1. Android传统架构
1.1 发展的前提:硬件抽象
2008年,我国迈入3G时代前夜,基础设施的变革让移动领域充满变数,无论设备、硬件还是软件都均未定型 。擅长架构和软件的Google在这一领域要获得生存和长足发展,需要团结一切可能的、甚至是未知的力量,取得移动运营商、芯片供应商、手机制造商的支持则是生存的第一步 。
硬件抽象层(HAL)在一定程度上起到这样的目的:它为移动领域五花八门、标准不统一的硬件驱动定义标准接口,避免Android过分依赖Linux,让后续的扩展和整机集成更加高效,满足了手机制造商的重要诉求;同时还起到隔离Linux内核的作用,避免厂商充满硬件秘密的驱动源码受GPL协议影响而开源,保障了芯片等硬件制造商的核心利益 。传统手机OS的定制和集成流程需要修改大量代码,负担不少,从这个角度来看Android HAL其设计是领先的 。结合AOSP优良的代码分支、模块管理,加上基于GNU automake巨集形成的Android build system,厂商享受到超越以往的便捷 。
然而HAL并无固定做法(如图2所示),Android 8.0之前,最初大量采用HAL旧版方式,表现为framework直接加载*.so并依赖,主要集中在网络、蓝牙等模块;旧版方式导致framework与具体驱动接口耦合过紧,后来形成HAL传统方式,即提供一定规范和接口进行改进,从而减少直接耦合,但每次厂商支持新版Android依旧有大量改动和适配;为更有效地解决这一问题,Android 8.0开启Treble项目,从此芯片厂商能通过基于Binder的HIDL提供稳定接口,制造商则可不受芯片厂商影响而直接更新Framework,甚至获得无需重新编译HAL即可OTA的能力 。
android android app下载

文章插图
图2. Android对硬件驱动的设计
受益于HAL这一设计,Google在全球获得更广泛的支撑,尤其是Android 8.0在国内厂商的迅速适配可见一斑 。HAL为Android设备量的持续增长提供了基础,并促进有实力的厂商向设备上层及基础设施两个领域纵深发展(图3),体现在掌握核心技术的厂商(如高通、华为、MTK),通过不断建设系统能力来强化竞争力(支持5G标准、硬件能力、软硬结合以及系统能力的深度定制等),而具备渠道和资源整合优势的手机制造商(华为、OPPO、小米、VIVO等),则立足OS持续构建更高效的应用来拓展版图(UI、推送、商店、轻应用等),这都体现出Android HAL对整个产业的凝聚和影响,间接弥补Android自身的诸多不足 。
android android app下载

文章插图
【android android app下载】
图3. 具备核心竞争力的厂商的发展趋势
1.2 能力的枢纽:组件化
对能力进行如何组织和复用是架构的最大挑战,借鉴现有能力是发展的捷径 。无论是Mircosoft的COM,还是OMG的CORBA,或是从EJB到Spring、从SOA到Serverless,随着基础设施如网络、终端设备的能力提升,这些技术的发展呈现出从重量到轻量、从对中心(总线)的重度依赖到轻量级依赖的趋势 。Android充分结合各领域先进技术,并基于移动端资源受限这一最大特色,形成了自身的技术特色:AIDL衍生自复杂的CORBA IDL,组件由SOA精简而来,各独立生老病死的System Service类似一个个微服务,Binder可以看做是对一种弱化总线、性能更好、可点对点通信的DBUS,UI布局系统则极大程度受到SWING的影响、manifest实际上就是APP与系统通信所必须的组件接口描述文件......