Android系统框架

Android系统大体可以分为五层,从上往下分别是:

Applications 层,Framework层,Libraries层,Hardware层,Linux层。

Applications层

这一层是app开发工程师接触最多的一层,与用户直接交互的就是这些应用程序。

应用程序的开发采用的是Java语言,这一层是一个被广大Java开发者热捧的Java世界。这个世界并不是完全独立,它的运转依赖于Native世界,同时也需要framework层作为基石。

主要开发工具就是Android Studio,很强大,用得很爽。

Framework层

这一层大部分是由Java语言编写,封装了很多功能,为Applications层提供各种各样的API,满足业务需求。通常我们看到的PMS,AMS,WMS等,就是在这一层进行实现。

一般定制功能或者解决系统bug的时候,需要对framework层代码进行编辑,我比较喜欢用vim编辑,然后在系统环境中进行编译。

Libraries层

这一层主要提供动态库,Android运行时库、Dalvik虚拟机等。这一层大部分都是用C或者C++写的,所以这一层可以简单把它看成是Native层。

可以单编成so库,然后推进机器端进行调试。

Hardware层

Android系统的硬件抽象层(全称Hardware Abstract Layer, 简称HAL)运行在用户空间中,它向下屏蔽硬件驱动模块的实现细节,向上提供硬件访问服务。通过硬件抽象层,Android系统分为两层来支持硬件设备,其中一层实现在用户空间(User Space),另外一层实现在内核空间(Kernel Space)。传统的Linux系统把对硬件的支持完全实现在内核空间,即把对硬件的支持完全实现在硬件驱动模块中。

Android分两层去控制硬件的原因,在于保护商家的利益。因为Linux是完全开源的,Linux部分的代码需要公开,但这样一来,关于一些Linux内核驱动的控制逻辑细节也会被公开。所以就通过两层来实现,一层是位于user space空间,专门实现对硬件的控制逻辑,这一层不作公开。而另一层则是在Linux内核中实现,这一层只是对硬件的一些简单读写操作,例如读写硬件寄存器的通道等。这一层可以被公开。

Linux层

包含了Linux内核和一些驱动模块(比如LED驱动,USB驱动,wifi驱动等)。这一层主要是跟硬件打交道,调驱动居多。

增加一个驱动或者debug时,可以单独编译kernel,然后单独烧录入系统。

结语

如上就是对Android系统框架的一个简单描述,简单介绍了各层大概做的事情。所以如果是刚开始接触Android的同学,建议先从Applications层,搭建第一个app(hello world)开始。因为这一层有比较方便好用的工具AS,初学者只需要上网大概了解下AS的安装和项目创建过程,就能创建自己的app。然后再慢慢去学习Java语法,很快就能入门。

至于其他层,可以作为后续能力提升,再向下延申学习。

关键在于坚持和学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值