超牛链AI Logo

超牛链博客: 读书|骑行|笔记分享
user
老王不响
@关于博主
2014-08-07

Android系统简介(中):系统架构 7 mins read


Android的系统架构栈分为4层,从上往下分别是Applications、Application framework、Libraries  & Android Runtime、Linux  Kernel。每层提供不同的Service功能以供上层调用。

 

一:Linux Kernel(Linux 内核):

    位于Android系统架构栈的底部,整个Android系统基于该层,最新的Android Kitkat 4.4基于Linux Kernel 3.8构建的。它提供的硬件设备抽象接口,以供其他架构层使用。 Linux内核层的主要功能分为2类:提供设备驱动(WIFI、蓝牙、照相机等), 操作系统管理功能(内存、进程管理等等)。
    •内存管理(Memory Management)
    •电源管理(Power Management)
    •硬件抽象(Hardware Abstraction)
    •进程管理(Process Management)
    •设备管理(Device Management)
    •安全设置(Security Settings)
    •网络协议栈(Network Stack)
    •硬件的驱动程序(Hardware Drivers)

 

二:Libraries  & Android Runtime(Android 原生库和Android运行时):

位于Linux内核层之上,基本由C、C++写的Android原生类库,每个负责特定的硬件设备结合或者响应UI的输入请求,如2D、3D的渲染等。功能列表如下:

•Webkit:浏览器引擎,让网页浏览的应用程序中。
•OpenGL:3D图形
•SGL:2D图形
•Surface Manager:屏幕上窗口管理器,用于视图渲染
•SQLite:数据库引擎
•Open SSL:互联网安全协议,支持SSL、TSL协议
•Media Framework:提供播放、录制各种视频、音频的格式。
•libc:远程C系统库。
•网络:提供对网络栈
•硬件:提供访问硬件的东西。
•操作系统:提供访问操作系统服务
•小工具:提供UI组件集合(如按钮,标签等)
•Free Type: 字体渲染

 

Android运行时包含DVM(Dalvik Virtual machine)和核心Java库, DVM的作用类似JVM(Java virtual machine),它的功能如运行字节码(byte Code),内存管理,线程管理等;它可运行.dex文件格式。

 

Android应用程序打包的流程如下图所示:

 

Core Java Libraries (Java核心库)        

用Java编写的核心API库,提供了强大的功能,如:

    • Data structures
    • Utilities
    • File access
    • Network Access
    • Graphics          

    三 Application framework (应用程序框架层)

    Android开发调用的系统服务功能,列表如下:

    Core Platform Services
    • Activity Manager: 管理App的生命周期
    • Package Manager :用于找到设备上安装的Apps包
    • Window Manager : 将用户的操作,翻译成为指令,发送给呈现在界面上的各个Window
    • Resource Manager :同App的资源管理
    • Content Providers :多个Apps之间共享数据
    • View System: 用于在UI创建一组视图

    Hardware Services
    • Telephony Service :电话呼叫管理
    • Location Service :GPS定位管理
    • Bluetooth Service :蓝牙管理
    • WiFi Service :WIFI管理
    • USB Service :USB管理


    • Sensor Service :传感器管理
        GPS定位代码:
      LocationManager lm = (LocationManager) Context.getSystemService(Context.LOCATION_SERVICE);

       

      四 Applicatoin(Android 应用程序)

      Android架构栈的顶层,有系统原生的App以及第三方的App。一般,开发者和用户大都关心本层,因为开发者编写的App要运行在本层。

      系统原生的App有:

      • SMS: 短信
      • Dialer :电话
      • Web browser:浏览器
      • Contact manager :通讯录
      • Email :电子邮件
      • Games etc.:内置的一些游戏等

      ----------------------------------------------------------

      2014-08-07
      老王 加冕为王
      老王,工作了19年的软件工程师、连续创业者、Blogger(since 2013),微软.net MVP获得者(2015~2016)、 Unity3D UVP获得者 (2017)。 曾任上市公司研发主管、知名外企Social Media Marketing 。 现专注于Instagram、SEO等海外社交媒体营销技术研究与实践。 四十而立的我,有2个可爱的宝宝,喜好骑行、读书、木工, 尤其喜好历史、科幻书籍。
      友情链接
      超牛链 260天前 2024年3月6日 15:16

      求楼主放我一马,留个沙发名

      超牛链 260天前 2024年3月6日 15:16

      辛苦楼主了,期待新鲜内容

      最新文章

      一路东北, 转眼二十年

      一路东北, 转眼二十年了,最后一次回眸长春,是2004...

      人道中年,悲欣交集

      中年人的生活 各自欢乐, 又或一地鸡毛,简言之:【悲...

      80后爱玩的PC游戏:红警、秦殇 —快乐呀。

      记得非典—2003年那会,周末一到,大学宿舍里面,吃完...

      超牛链AI:Ollama本地LLM LangChain RAG小试--算力为王

      算力为王时代: CPU --> GPU

      GPU这...

      热门文章

      骑行故事初心--自由的御风而行

      2023年,三年疫情过后第一个春天,我开始了骑行: 空...

      Unity3D for VR 学习(7): 360°全景照片

          在VR应用中,有一个相对简单的虚拟现实体验,那...

      C#程序员整理的Unity 3D笔记(六):Git源码管理

      对程序员而言,写的代码用源码管理系统管理起来,非常方便...

      《一句顶一万句》 遇见一个能说的上话的人不易

      2024年 甲辰龙年春节假期,我看了2本小说,茅盾文学...

      相关【技术杂谈】文章

      查看所有相关【技术杂谈】文章
      搭建Squid3 密码账号IP代理

      上文中,说明了 Squid3 IP Proxy 隐藏原IP,这里就搭建Squid 3密码账号IP代理进行整理,涉及...

      不用插件,js脚本显示星号密码

      不用插件,js脚本显示星号密码

      以前,我是用Chrome插件做这个这的--显示星号密码的。 今天,分享一个不用插件...

      执行MySQL报错

      今天新采购了柒比贰WordPress主题,安装主题时候报错: MySQL命令行使用sql语句进行建表时,MySQL...