Android系统架构

Android系统架构

如该经典图,将android大致分为四层:Linux内核层、库和运行时、Framework层和应用层。

Android系统架构经典示意图
Android架构总览
  • Linux

android最低层最核心的部分,包含android系统的核心服务,包括硬件驱动、进程管理、安全系统等。

  • Dalvik 与 ART

Dalvik包含一整套android运行环境虚拟机,每个app都会分配Dalvik虚拟机来保证互相之间不受干扰保持独立。

Dalvik特点:运行时编译。
ART特点:安装时编译。(5.X之后取代Dalvik)

  • Dalvik支持已转换为.dex格式的java应用程序的运行.。
    .dex格式:专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。
    每一个Dalvik应用作为一个独立的Linux进程执行,在有限的内存中允许同时运行多个虚拟机的实例。独立的进程可以防止在虚拟机崩溃时所有程序都被关闭。
    因为Dalvik虚拟机,Android开发者只需按照谷歌提供的SDK即可轻松创建APP,不需要顾忌硬件、底层驱动等问题,在每次执行应用时,Dalvik虚拟机都会将程序的语言由高级语言编译为机器语言,Dalvik依靠一个Just-In-Time(JIT)编译器去解释字节码,每次运行程序都需要做上述操作,将字节码编译为机器语言;所以很长时间以来,Dalvik虚拟机一直被用户指责为拖慢安卓系统运行速度不如iOS的根源。
  • ART模式(Android Runtime),谷歌收购了一家名为Flexycore的公司,该公司一直致力于Android系统的优化,ART模式也是在该公司的优化方案上演进而来。
    启用ART模式后,系统在安装应用的时候会进行一次预编译,在安装应用程序时会先将代码转换为机器语言存储在本地,这样运行程序时就不会每次都进行一次编译了,将提高执行效率。
Dalvik PK ART
RAM(random access memory)即随机存储内存,这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。
ROM(Read-Only Memory)即只读内存,是一种只能读出事先所存数据的固态半导体存储器。
  • Framework


    Framework
  • Standard libraries


    Standard libraries
  • Application

如下图,分别为NDK和Java开发App的主要构成。
无论哪种App都有Android Mainfest文件、Dalvik Classes、Resource Bundle。

NDK App
SDK App

开发者应关注每个版本的SDK修改,从而提高应用的兼容性。

Android App组件架构

画重点!

android 四大组件:Activity、BroadCastReciever、ContentProvider、Service

activity负责向用户展示信息和处理结果,信息可以通过资源获取,也可以通过ContentProvider获取其他应用信息、Service从后台计算、下载处理的结果、BroadCastReciever获取广播信息。

通过Intent,组件之间进行通信,传递信息,交换数据,形成各自独立而又紧密联系的关系。

Context(受到万千佳丽宠爱有木有)

activity、service、application都继承自Context
创建context的时间点:创建activity、service、application

应用程序第一次启动,android会创建一个application对象,同时创建application context,所有组件共同拥有一个context对象,贯穿整个应用尽扯那个的生命周期,为应用全局提供功能环境的支持。
创建activity、service时,系统创建activity实例、service
实例的context对象。所以通过getApplicationContext()取得整个App的context

Android系统目录

/system/app/ 系统app
/system/bin/ 存放Linux自带组件
/system/build.prop 系统属性信息
/system/fonts/ 字体
/system/framework/ 系统核心文件、框架层
/system/lib/ 几乎所有共享库文件(.so)
/system/media/ 系统提示音、铃声
/system/usr/ 用户配置文件
/data/app/ 用户数据信息,安装的app或者升级的app
/data/data/ app的数据信息、文件信息、数据库信息等
/data/system/ 手机各项系统信息
/data/misc/ 大部分WiFi、VPN信息
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,901评论 25 709
  • 前言 技术博客终于可以恢复正常的更新速度了,原因是我编写的进阶书籍的初稿已经完成,窃以为它将会是Android应用...
    刘望舒阅读 10,987评论 14 67
  • Android Studio JNI流程首先在java代码声明本地方法 用到native关键字 本地方法不用去实现...
    MigrationUK阅读 14,088评论 7 123
  • 学习所用,可随意转载,转载请注明出处,或在本文下方留言说明即可,谢谢! 百度了一下,发现都是wget的方式,且不说...
    vonhng阅读 4,145评论 0 1
  • 亲子阅读已经有一段时间了,之前一直也没太在意效果,刚开始阅读打卡是为了获得一点奖励,读着读者为了不掉队,竟然也坚持...
    娥姐姐阅读 4,692评论 0 0

友情链接更多精彩内容