探索Android开发:体系结构、启动过程与特色详解

需积分: 4 2 下载量 64 浏览量 更新于2024-09-27 收藏 4.76MB PDF 举报
在《Android开发杂谈》一书中,作者广州网易的闻波(@wenbob)深入探讨了Android系统的各个方面,包括系统架构、初始化过程以及程序优化和混淆Hacking技巧。本文将围绕以下几个关键知识点展开详述: 1. **系统组成与特点** - Android系统由五个主要层次构成:Application(应用层)、Framework(框架层)、Nativelibraries(native库层)、AndroidJNI(Java Native Interface)以及Userspacedrivers(用户空间驱动程序)。 - Application层包含预装的Android内置程序,如Home、Contracts、Phone等,以及Google的闭源程序如GoogleClient;Vendor程序则是各个手机制造商自定义的应用和服务,如HTCDream和OMS。 2. **系统启动过程** - 系统启动分为几个阶段:首先是引导过程,涉及InitialProgramLoader和SecondProgramLoader,它们负责加载Linux内核。 - Linuxkernel的初始化过程开始于init进程,这是一个关键的服务,它启动其他必要的服务和系统组件。 - 分区镜像文件如hboot.img(启动加载器)和radio.img(射频通信程序)也在启动时扮演重要角色,如GSM和CDMA模块的管理。 3. **Android体系结构** - Android采用五层架构,其中Java层的AndroidCoreCode是核心组件,Vendorextensions是制造商添加的自定义扩展;Nativelibraries包含了各种功能函数库,如C/C++库、音视频处理、SQLite等。 - AndroidJNI允许Java与Native代码交互,DalvikVM是Android的轻量级虚拟机,特别适合移动设备,通过fork方式执行应用程序Zygote,提高了启动速度。 4. **HAL与驱动程序** - HAL(Hardware Abstraction Layer)是Android中一个重要的设计,许多驱动程序在用户态运行,依赖于内核提供的硬件抽象接口,如CameraService、SurfaceFlinger和AudioFlinger。 - Bionic是Android的精简版C/C++运行库,出于商业考量,避免被LGPL许可证约束,同时避免使用开源库uCLib。 5. **浏览器特性** - Android内置的是Webkit的移植版本,虽非Chrome,但提供了HTML5功能,如本地存储,不支持文件上传。内置的Googlegears没有源代码,2.x版本进一步增强了HTML5支持。 6. ** DalvikVM的优势** - DalvikVM的轻量化设计,仅约500KB大小,适合移动设备的性能需求,且通过Zygote机制提高应用启动速度。 通过学习这些知识点,Android开发者可以更好地理解Android系统的运作机制,进行高效的应用开发和优化,同时对系统级别的技术有更深的认识。同时,对于驱动程序和权限管理的理解,也有助于避免不必要的权限冲突和提高程序的安全性。