Framework学习笔记(一)

参考https://blog.csdn.net/huaxun66/category_7203839.htmlhttps://www.jianshu.com/p/9f978d57c683写下自己的学习笔记,因为敲一遍印象会深刻,感谢原博主提供学习素材。

一,Android系统架构

Android本质上是在Linux系统上增加了Java虚拟机,并在虚拟机上搭建了一个JAVA的application framework,所有的应用程序是基于这个framework之上的。

Android分为四层,应用程序层、应用程序框架层、系统运行库层、Linux内核层

1,应用程序层

提供核心应用程序包,如桌面、邮件、短信、日历等,在这一层开发者可以安装自己写的程序包。

2,应用程序框架层

这层提供了可以开发应用程序时所需要的API,平时调用的API就是这个层提供的,API都是Java代码写的,可以称为Java Framework,该层包括十个部分:

Activity Manager(活动管理器,管理生命周期以及通常的导航回退功能),

Location Manager(位置管理器,提供地理位置及定位服务),

Package Manager(包管理器,管理安装的应用程序),

Notification Manager(通知管理器,管理状态栏显示的自定义的消息),

Resource Manager(资源管理器,提供本地字符串、图片、布局文件等非代码资源),

Telephony Manager(电话管理器,管理移动设备的功能),

Window Manager(窗口管理器,管理开启的窗口程序),

Content Providers(内容提供器,不同程序可共享数据),

View System(视图系统,构建应用程序的基本组件)

3,系统运行库层

该层分为两部分,分别是C/C++程序库 和 Android运行时库

(1)C/C++程序库

C/C++程序库能被不同组件使用,并通过Framework层为开发者提供服务,该程序库分为9部分:分别是图形管理、媒体库、SQLite、OpenGLEState(3D绘图函数库)、SGL(底层2D图形渲染引擎)、FreeType(字体引擎,提供了统一的接口访问多种字体文件)、WebKit、SSL(安全套接层)、libc.

(2)Android运行时库

运行时库分为核心库和ART(5.0后,Dalvik虚拟机被ART取代)。

核心库提供了Java语言核心库的大多数功能。

Android的核心服务基于Linux内核层,在此基础上添加了部分Android专用的驱动。系统的安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖于该内核。

二,Android系统启动流程

1,启动电源以及系统启动

按下电源开关,此时硬件电路会产生一个确定的复位时序,因为硬件内部的寄存器状态可能还没准准备好,比如磁盘或内存,所以要保证最后一个被复位的器件是CPU,不然会出现外围硬件初始化错误。当CPU正确复位后,就开始执行第一条指令,这个指令所在的内存地址是由CPU制造者指定,是固定的,这个固定地址所保存的程序就是引导程序BootLoader。

2,引导程序BootLoader

BootLoader是Android操作系统开始运行前的一个小程序,主要作用是装载真正的用户程序,就是把系统OS拉起来运行。不同的CPU有不同的装载方式,如并口存储器、SD卡,还有RS232接口。装载时需要提供的信息包括:(1)从哪里读取用户程序;(2)用户程序的长度是什么;(3)装载用户程序后,用户程序的执行入口在哪里。

BootLoader种类很多,Android上主要是U-boot,U-Boot已经成为ARM平台事实上的标准BootLoader。

3,ARM

目前Android系统多运行在ARM处理器上,对于ARM处理器,当复位完毕后,处理器首先执行其片上ROM中的一小块程序,这块几KB的程序就是BootLoader程序。

4,Linux内核启动

内核启动时,会设置缓存,被保护存储器,计划列表,加载驱动。当完成系统设置后,就会在系统文件中寻找init文件,然后启动root进程或系统的第一个进程。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值