Android系统学习总结一

简介: 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系统整体框架

640.jpg

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

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初始化程序

目录
相关文章
|
5天前
|
Android开发
Android 如何将定制的Launcher成为系统中唯一的Launcher
Android 如何将定制的Launcher成为系统中唯一的Launcher
17 2
|
7天前
|
机器学习/深度学习 Java Shell
[RK3568][Android12.0]--- 系统自带预置第三方APK方法
[RK3568][Android12.0]--- 系统自带预置第三方APK方法
33 0
|
7天前
|
Java Android开发
Android OTG U盘无法显示在系统文件管理的修改
Android OTG U盘无法显示在系统文件管理的修改
7 0
|
7天前
|
安全 Android开发
修改Android系统的签名
修改Android系统的签名
19 0
|
7天前
|
安全 Android开发
Android 系统签名
Android 系统签名
16 0
|
7天前
|
Android开发
Android APP 隐藏系统软键盘的方法
Android APP 隐藏系统软键盘的方法
13 0
|
7天前
|
Android开发
Android修改默认system/bin/下可执行程序拥有者和权限,使用实例,只有root和系统app权限才能执行某个命令。
Android修改默认system/bin/下可执行程序拥有者和权限,使用实例,只有root和系统app权限才能执行某个命令。
13 0
|
7天前
|
JSON Android开发 数据格式
Android 打开系统文件管理器,并返回选中文件的路径
Android 打开系统文件管理器,并返回选中文件的路径
13 0
|
8天前
|
Android开发 C++
Android 系统属性(SystemProperties)
Android 系统属性(SystemProperties)
16 1
|
8天前
|
存储 缓存 Linux
Android 系统的分区
Android 系统的分区
14 1