Android架构(框架)汇总

Java系统服务: 这部分系统服务又可以分为两种:Java核心系统服务和Java硬件系统服务。
(1)Java核心系统服务是Android系统正常运转的基础,包括大家所熟知的AMS、WMS、PMS等。例如:

 (2)Java硬件服务是为应用提供硬件控制服务,如电话服务、wifi服务、PowerManagerService等。例如:

该两层之前,通过Binder实现进程间通信。允许framework来跨进程边界,来调用Android的系统服务的代码,这使得框架API与Android系统服务能够进行交互。

总结:应用程序---SDK---->系统框架层---Binder IPC--->系统服务层。

以app 获取GPS信息为例:

 

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

Android系统架构开篇:https://zhuanlan.zhihu.com/p/26100298; 此篇是个目录,包含各种引用.比较经典 

Android系统整体架构

主要进程就是sf,sm,ss(ams,wms)

 图解: Android系统启动过程由上图从下往上的一个过程是由Boot Loader引导开机,然后依次进入 -> Kernel -> Native -> Framework -> App,接来下简要说说每个过程

android architecture在这里插入图片描述

Android系统体系架构分为5层,自顶而下分别是:

  • 应用程序框架(Application Framework)
  • 进程通信层(Binder IPC)
  • 系统服务层(Android System Services)
  • 硬件抽象层(HAL)
  • Linux内核(Linux Kernel)

1.2 进程通信层(Binder IPC)

进程间通信机制允许framework来跨进程边界,来调用Android的系统服务的代码,这使得框架API与Android系统服务能够进行交互。

1.3 系统服务层(Android System Services)

功能是通过framework APIs与系统服务通信,以实现底层硬件的访问。服务是模块化的.Android包括两类服务:系统服务(如Window Manager,Notification Manager)和媒体服务(包括播放和录制的媒体服务)

1.4 硬件抽象层(HAL)

硬件抽象层(HAL)定义了一个标准接口用于硬件厂商的实现. HAL允许功能实现,而不会影响或修改上层的系统。HAL的实现被打包成模块(.so)文件,并在适当的时候被加载进Android系统。

HAL components

1.5 Linux内核(Linux Kernel)

个人感觉android 就是在linux 上写了一层 java 服务,然后在service之上写了一层GUI.

Syscall && JNI

实例分析:

Audio architecture

  • Application framework, 应用程序框架包括使用android.media API与audio硬件交互的app代码.在内部,这个代码调用相应的JNI类来访问与audio硬件交互的native代码。

  • JNI, JNI代码关联android.media调用native代码来访问audio硬件. 

  • Native framework, native框架提供一个相当于android.media包的本地框架,调用IPC代理来访问媒体服务器的音频专用的服务。

  • Binder IPC, IPC代理可跨进程通信

  • Media server,媒体服务包括audio服务,是真正与HAL实现层交互的代码。

  • HAL,HAL定义了audio服务调用的标准接口,audio硬件必须正确实现的功能。

  • Kernel driver,audio驱动是与硬件和HAL实现的交互。可以使用Linux声音架构(ALSA),开发声音系统(OSS),或者自定义的驱动(HAL与驱动程序无关)。

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
下面引用<老罗的android之旅>

Android专用驱动(binder)
Android硬件抽象层
Android应用程序组件
Android应用程序框架
Android用户界面架构
Dalvik虚拟机

 

四大组件(砖头) Activity -- UI、交互 Service -- 后台计算 Broadcast Receiver  -- 广播 Content Provider -- 数据

Android用户界面架构

窗口管理框架 Window;WindowManagerService;SurfaceFlinger
详见:https://blog.csdn.net/fdsafwagdagadg6576/article/details/11635552

组件设计思想

组件化背景;组件化设计;组件化;支持 一个小实验

基本思想 Everything is component
具体实现;程序由组件组成;组件与进程剥离;组件皆程序入口

程序由组件组成 Activity:前台交互 Service;后台计算 Broadcast Receiver;广播通信 Content Provider;数据封装

组件与进程剥离: 组件关闭时,进程可以继续存在 ;进程关闭时,组件可以继续存在 

组件皆程序入口 Activity -- onCreate Service -- onCreate Broadcast Receiver -- onReceive Content Provider -- onCreate

谁来负责组件的启动和关闭? 谁来维护组件的状态? 谁来管理组件运行时所需要的进程? 组件之间如何进行通信?

Activity Manager Service 启动组件.关闭组件.维护组件状态. 进程管理
Binder 为组件间通信提供支持 ;高效的IPC机制

应用程序消息处理机制 -可以参见handler机制处理文章
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

略:Android应用程序资源管理框架

代码和资源分离

资源分类 assets& res: animator anim color drawable layout menu raw values xml
Android资源编译 写了很多steps和源码,但是没感觉有什么用

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值