Android系统编译原理

[1] 历史
    2003年Android公司成立,系统开发
    2005年Android被google收购
    2007年11月5日,google公司推动成立手机开发联盟(HAL)
    2008年9月Android 1.0正式发布,HTC G1使用
    
[2] 如何研究学习系统?
    1. 了解系统
       (1) 架构
       (2) 内核
       (3) 文件系统
       操作系统 = 内核 + 文件系统(数据和程序分类存储)
       
    2. 使用系统
       运行
       
    3. 研究学习系统原理
       (1) 获取源码
       (2) 编译运行
       (3) 编译原理
       (4) 启动过程
       
       (5) 定制系统
       
[3] 概述
    理想的手机操作系统 = 应用通用 + 容易开发友好的应用 + 容易开发手机应用
    
    应用层
    ---------------------------------------
    如何让手机应用容易开发?
    如何让友好的应用容易?
    应用框架层
    ---------------------------------------
                             如何让应用通用?
                                  vm
    系统运行库 和 系统服务
    ---------------------------------------
    如何让硬件更容易使用?
    linux内核
    ---------------------------------------
    hardware


[4] 应用层
    1. Android 系统中所有应用程序的地位平等, 系统不绑定--开放
    2. 应用层是应用程序开发工程师工作的层次
    
[5] 应用框架层(Application Framework)
    如何让友好的应用容易?
    1. Activity Manager
       管理Activity之间的切换
       
    2. Window Manager
       管理窗口之间的切换
       
       Activity =  Window + 用户交互代码
       
    3. Content Provider
       程序<--------------Content Provider------------>程序
       例:
       phone                                           联系人
       sms
       
    4. View System
       基本界面组件实现
       
    5. Package Manager
       管理应用程序包
       
    6. Resource Manager
       资源管理, 资源包含: 字符串、图片和布局
       
    7. XMPP(Extensible Messging and Presence Protocol) Service
       可扩展消息与表示协议, 四大即时通讯协议协议,基于xml脚本实现。
       Google的Gtalk基于基于协议协议。
    
    如何让手机应用容易开发?
    1. Notification Manager
       通知管理
       
    2. telephone Manager
       电话管理


    3. Location Manager
       定位管理,可以获得当前的位置信息
       
注意: 蓝颜色的部分用java语言实现
       
[6] 虚拟机
    1. Core Libaries
       Java语言核心库
       
    2. Dalvik(冰岛小渔村的名字, 非常小,非美丽)Virtual Machine
       (1) 每个应用程序运行在自己独立的虚拟机上, 每个虚拟机一个进程
       (2) 基于寄存器(指令支持的操作数只能是寄存器和立即数)实现
       (3) 执行.dex文件(针对内存做了优化)
       (4) java类--->.class文件---dx(SDK)---->.dex文件
       (5) 依赖于2.6以上版本的内核, 因为在2.6以上版本的内核中,加入一些虚拟机需要的机制:
           线程和底层的内存管理机制
           
[7] 系统运行库
    1. libc
       标准C库
       
    2. SSL(Secure Socket Layer 安全套接层)
       在网络传输时, 加入对数据的加密, 有以下三个功能:
       (1) 使用公钥证书对双端进行认证
       (2) 通讯加密
       (3) 数据完整性检查
       
    3. SGL
       2D图形加速引擎
       
    4. Webkit
       web浏览器引擎,支持了Android和一个内嵌web视图
       
    5. FreeType
       位图和适量字体图库(字库)
       
    6. OpenGL | ES
       3D图形加速引擎
       
    7. SQLite
       开源小型关系型数据库
       
    8. Media Framework
       基于PacketVideo Open Core实现, 支持很多的多媒体格式,音频(mp3, AAC和AMR)、视频(mpeg4、H.264 ...)
       支持图片文件(jpg、png...)
       
    9. Surface Manager
       对显示子系统进行管理,用于应用程序的2D和3D图形融合
       
   注意: 绿颜色部分用C/C++实现
      
[8] kernel
    Binder 用于android系统中进程间通信
   
[9] 文件系统
    1. /d
       链接到/sys/kernel/debug
       
    2. /data
       用户数据
    
    3. /dev
       设备文件
       
    4. /etc
       链接到/system/etc
       
    5. /mnt
       外部文件系统的挂载点, 如: SDcard
       
    6. /proc 和 /sys
       挂载procfs和sysfs虚拟文件系统
       
    7. /root
       root用户的home目录
       
    8. /sbin
       基本调试工具和启动程序
       
    9. /sdcard
       链接到/mnt/sdcard目录
       
    10. /system
       * /system/app            apk应用程序
       * /system/preinstall
         /system/pri-app
       
       
       * /system/bin            linux应用程序(常用工具)
       * /system/etc            启动脚本和配置文件
       * /system/fonts          字库
     
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值