Android群英传学习——第一章、Android体系与系统架构

一、Android系统架构

这里写图片描述

这是Android系统架构的中文版示意图,它将Android大致分为了四层,底层到外层依次是Linux内核层、库和运行时、Framework层和应用层,这些层次既相互独立,又相互关联。

1、Linux层——是Android最底层最核心部分,它包含了Android系统的核心服务,包括硬件驱动、进程管理、安全系统等。打开手机设置——关于手机,就可以先到手机的内核版本。

这里写图片描述

2、库和运行时——库是指开发者在开源环境中可以使用的开发库,Android系统运行时需要用到核心库和Dalvik虚拟机,Dalvik包含了一整套Android运行环境虚拟机,每个APP都会分配Dalvik虚拟机来保证互相之间不受干扰,它是在运行时编译。现在ART模式已经取代了Dalvik,ART采用的是安装时就进行编译,运行时不再编译。

3、Framework层——包括活动管理器、窗口管理器、内容提供器、视图系统、通知管理器、包管理器、电话管理器、资源管理器、位置管理器、xmpp服务等,在这里我只想说,如果要走Android开发高级进阶,Framework一定是你绕不开的道,你一定会时常与他打交道。

4、应用层——应用层包括使用NDK开发的App和使用Java开发的App。

Android系统架构不是一张图我们就能理解清楚的,但是随着学习的深入和实践的累积,逐渐的,我们一定会对Android系统架构有更深刻和透彻的理解。

二 、Android App组件架构

在Android系统架构中的应用层,最重要的知识点要数App组件架构了,就是我们常说的Android四大组件:Activity、BroadCast Reciever、Content Provider、Service,通常学完这四大组件,你就算是Android初级开发者了。

1、Android四大组件如何协同工作

Activity是用户可以直接看到的,负责向用户展示信息和处理结果,如果需要用到其他应用的信息或者共享本App的信息,就使用到了Content Provider,当App需要在后台执行任务,比如下载任务时,就用到了Service,如果App需要在内部Activity内传递消息或者给别的应用发送和接收消息或者给用户提示信息时,就用到了BroadCast Reciever广播接收器。Android系统提供了一个信使——Intent,作为信息传递的载体。组件与组件之间通过它来通信、传递信息、交换数据,使四大组件各自独立又紧密联系。

2、应用运行上下文对象

Android系统的上下文对象即Context,我们可以把它理解为当前对象在程序中所处的一个环境。Application、Activity、Service都继承自Context,所以当应用程序第一次启动时,系统会创建一个Application对象,同时创建Application Context,所有组件都共同拥有这样一个Context对象;在创建Activity和Service组件时,系统也会给他们提供创建Activity实例、Service实例的Context对象,所以比如在Activity中获取Context对象时,可以直接使用this,在匿名类中要指定XXXActivity.this。注意通过getApplicationContext()方法获取的是整个APP的Context。

三、Android系统源代码目录与系统目录

1、Android系统源代码目录

查看Android源代码的网站:http://androidxref.com/

这里写图片描述

其中,bionic——bionic C库,bootable——启动引导相关代码,build——存放系统编译规则等基础开发包配置,cts——Google兼容性测试标准,dalvik——dalvik虚拟机,development——应用程序开发相关,external——android使用的一些开源的模块,packages——应用程序包,prebulit——x86和arm架构下预编译资源,sdk——sdk及模拟器,system——底层文件系统库、应用及组件。

并不是所有的源代码结构都是这样。Eclipse、Android Studio都属于开发IDE,即集成开发环境,简化计算机与开发者的交互,但很多事IDE是无法完成的,比如自动化编译、定制编译、版本控制、自动测试等,因此Android引入了Makefile机制,它可以将源文件按其类型功能或者模块放置在不同的目录中,然后定义一系列规则来指定模块或者文件进行编译。它最大的好处就在于可以进行自动化编译,同时还可以做到可控制的编译 。

2、Android系统目录

Android手机中的系统目录与源代码目录结构还是有所不同的。

这里写图片描述

1)/system/app/  这里放的是系统中安装的App

这里写图片描述

  2)/system/bin/   这里记录的是系统的属性信息
  3)/system/fonts/ 字体
  4)/system/framework/  系统的核心文件、框架层
  5)/system/lib/   存放几乎所有的共享库(.so)文件
  6) /system/media/ 保存铃声之类的声音文件
  /system/media/audio/目录中保存着Android系统默认的铃声

这里写图片描述

alarms目录是闹铃提醒,notification目录是短信或提示音,ringtones目录是来电铃声,ui目录是一些界面音效。

 7)/system/user/  用来保存用户的配置文件,如键盘布局、共享、时区文件等。
 8)/system/build.prop  记录的是系统的属性信息

data目录包含了用户的大部分数据信息
这里写图片描述

9)/data/app/  包含了用户安装的App或者升级的App
10)/data/data/  包含了了App的数据信息、文件信息、数据库信息等,以包名的方式来区分各个应用。
11)/data/system/  包含了手机的各项系统信息
12)/data/misc/  保存了大部分的Wi-Fi、VPN信息

3、Android App文件目录

这里写图片描述

Android Studio中的Project就相当于Eclipse里面的Workspace,而Android Studio中的Module就相当于Eclipse里的Project。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值