查看原文
其他

Android系统学习总结一

一、如何学习android系统?

1、了解android系统

    主要包括发展历史,android的基本架构,内核,文件系统。   

2、使用android系统

    现在基本上有android手机的人天天都在用。

3、研究学习android系统

    主要包括获取源代码、编译运行系统源码、编译的原理、系统启动流程。

4、定制修改开发android系统

    主要包括进行系统定制,android底层开发。


二、android的发展史

2003年Android公司成立,系统开始开发

2005年Android公司被google公司收购

2007年11月5日,google公司成立手机开发联盟

2008年9月Android 1.0正式发布,HTC的G1手机使用


三、android系统整体框架

其中包括几个重要的组成部分,主要有如下:

1、Linux内核

android系统在标准linux内核的基础上加了android特有的一些驱动。

binder驱动,用于进程间通讯

还有电源管理,音频驱动,输入设备驱动等。

2.android核心库层

2.1 libc

BSD继承来的标准C系统函数库

2.2 SSL(Secure Sockets Layer 安全套接层)

SSL在传输层对网络连接进行加密, 有以下三个功能: 

(1) 使用公钥证书对双端进行认证

(2) 通信加密

(3) 数据完整性检查

2.3 SGL

底层的2D图形引擎

2.4 Webkit

web浏览器引擎,支持Android浏览器和一个可嵌入的web视图

2.5 FreeType

位图(bitmap)和矢量(vector)字体显示

2.6 OpenGL ES

3D加速库,支持硬件加速及高度优化的软件加速

2.7 SQLite

强劲的轻型关系型数据库引擎

2.8 Media Framework

    基于PacketVideo OpenCORE实现,支持多种常用的音频(MP3、AAC和AMR)、视频格式(MPEG4, H.264)的录制回放,支持静态图片文件(JPG, PNG)

2.9 Surface Managerd

对显示子系统的管理,为多个应用程序提供2D和3D图层的无缝融合dw


android运行时环境

包含Dalvik虚拟机和java核心库,提供java编程语言核心库大多数功能。

Dalvik,冰岛小渔村的名字,非常小,非常美丽

java虚拟机。

a.每一个android应用程序在独立的虚拟机中运行,每一个虚拟机一个进程。xxx.java

b.基于寄存器,一般jvm都是基于栈的,所以速度快。

c.执行.dex压缩文件,针对内存优化。

d.java类通过java编译器编译成.class,然后再由dx生成.dex文件。

e.依赖于linux内核的一些东西,线程和内存管理等。


3.应用程序框架层

    主要是为了让应用程序开发更加方便,快捷,容易。不然一个系统如果应用程序开发难,那么相关应用程序自然就少,应用少的话玩的人自然就少。

3.1 Activity Manager

    window + 用户交互代码,主要用于管理应用程序的生命周期。

3.2 window Manager

    显示窗口管理

3.3 view system

    基本界面组件

3.4 资源管理器

    管理应用程序相关的字符串,图片,布局文件等资源

3.5 内容提供者

    用来应用程序和应用程序之间共享数据的,比如电话应用和短信应用共享联系人信息。

3.6包管理器

    管理应用程序包

3.7 电话管理器

    电话相关业务

3.8 消息(Notification)Manager

    在状态栏显示信息

3.9 定位管理器

    获得当前地理位置

3.10 XMPP serice

    即时消息服务


4.应用程序和小组件

    电话,消息等等应用程序,都是java语言开发。


5. android源代码获取

https://android.googlesource.com/


6.android源代码目录

abi           应用程序二进制接口

bionic      bionic c库

bootable 启动引导相关代码

dalvik      dalvik java虚拟机

其中几个比较重要,跟移植密切相关的目录:

device     产品相关代码,按厂家分类

framework 应用程序框架代码

out          目标输出目录

build        编译系统规则

developers & development 开发工具,例子

hardware HAL层代码,硬件抽象层代码

packages 系统级应用程序代码

external 第三方库工具,webkit 等。

ndk 本地代码 linux应用层

system   系统核心服务代码,init初始化程序











    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存