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

目录
相关文章
|
26天前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
50 15
Android 系统缓存扫描与清理方法分析
|
17天前
|
算法 JavaScript Android开发
|
20天前
|
安全 搜索推荐 Android开发
揭秘安卓与iOS系统的差异:技术深度对比
【10月更文挑战第27天】 本文深入探讨了安卓(Android)与iOS两大移动操作系统的技术特点和用户体验差异。通过对比两者的系统架构、应用生态、用户界面、安全性等方面,揭示了为何这两种系统能够在市场中各占一席之地,并为用户提供不同的选择。文章旨在为读者提供一个全面的视角,理解两种系统的优势与局限,从而更好地根据自己的需求做出选择。
50 2
|
28天前
|
安全 搜索推荐 Android开发
深入探索安卓与iOS系统的差异及其对用户体验的影响
在当今的智能手机市场中,安卓和iOS是两大主流操作系统。它们各自拥有独特的特性和优势,为用户提供了不同的使用体验。本文将深入探讨安卓与iOS系统之间的主要差异,包括它们的设计理念、用户界面、应用生态以及安全性等方面,并分析这些差异如何影响用户的使用体验。
|
28天前
|
安全 搜索推荐 Android开发
揭秘iOS与Android系统的差异:一场技术与哲学的较量
在当今数字化时代,智能手机操作系统的选择成为了用户个性化表达和技术偏好的重要标志。iOS和Android,作为市场上两大主流操作系统,它们之间的竞争不仅仅是技术的比拼,更是设计理念、用户体验和生态系统构建的全面较量。本文将深入探讨iOS与Android在系统架构、应用生态、用户界面及安全性等方面的本质区别,揭示这两种系统背后的哲学思想和市场策略,帮助读者更全面地理解两者的优劣,从而做出更适合自己的选择。
|
19天前
|
安全 搜索推荐 程序员
深入探索Android系统的碎片化问题及其解决方案
在移动操作系统的世界中,Android以其开放性和灵活性赢得了广泛的市场份额。然而,这种开放性也带来了一个众所周知的问题——系统碎片化。本文旨在探讨Android系统碎片化的现状、成因以及可能的解决方案,为开发者和用户提供一种全新的视角来理解这一现象。通过分析不同版本的Android系统分布、硬件多样性以及更新机制的影响,我们提出了一系列针对性的策略,旨在减少碎片化带来的影响,提升用户体验。
|
19天前
|
安全 Android开发 iOS开发
深入探索iOS与Android系统的差异性及优化策略
在当今数字化时代,移动操作系统的竞争尤为激烈,其中iOS和Android作为市场上的两大巨头,各自拥有庞大的用户基础和独特的技术特点。本文旨在通过对比分析iOS与Android的核心差异,探讨各自的优势与局限,并提出针对性的优化策略,以期为用户提供更优质的使用体验和为开发者提供有价值的参考。
|
21天前
|
安全 Android开发 iOS开发
安卓系统与iOS系统的比较####
【10月更文挑战第26天】 本文将深入探讨安卓(Android)和iOS这两大主流移动操作系统的各自特点、优势与不足。通过对比分析,帮助读者更好地理解两者在用户体验、应用生态、系统安全等方面的差异,从而为消费者在选择智能手机时提供参考依据。无论你是技术爱好者还是普通用户,这篇文章都将为你揭示两大系统背后的故事和技术细节。 ####
39 0
|
1月前
|
IDE Android开发 iOS开发
探索安卓与iOS系统的技术差异:开发者的视角
本文深入分析了安卓(Android)与苹果iOS两大移动操作系统在技术架构、开发环境、用户体验和市场策略方面的主要差异。通过对比这两种系统的不同特点,旨在为移动应用开发者提供有价值的见解,帮助他们在不同平台上做出更明智的开发决策。
|
1月前
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a