1、 Android系统结构及平台搭建Android系统结构Android开发环境搭建Android启动流程分析Android系统结构Android系统结构 基于Linux的自由及开源的操作系统。Android操作系统最初由Andy Rubin开发。2008年10月 第一部Android智能手机发布。2011年第1季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2012年11月,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。2013年09月24日谷歌开发的操作系统Android迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。目前最
2、流行的智能手机开发平台,现已普及到平板电脑、游戏机、数码相机、OTT机顶盒、智能电视等各终端产品。Android系统结构一个好的开发平台一定有一个成熟、稳定的系统架构来支撑Android平台系统结构从上到下分为四层:p应用层p框架层p系统运行库pLinux内核层Android系统结构应用层pAndroid不仅仅是操作系统,也包含了许多应用程序,如SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等。p用Java语言编写,基于框架层API实现。p可被开发人员开发的其他应用程序替换。Android系统结构框架层p 可重用的软件组件,简化应用程序的开发,向应用提供API。p Activit
3、y Manager(活动管理器)管理各个应用程序生命周期以及通常的导航回退功能p Window Manager(窗口管理器)管理所有的窗口程序p Content Provider(内容提供器)使得不同应用程序之间存取或者分享数据 p View System(视图系统)构建应用程序的基本组件 p Notification Manager(通告管理器)使应用程序可以在状态栏中显示自定义的提示信息p Package Manager(包管理器)Android系统内的程序管理p Resource Manager(资源管理器)提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等An
4、droid系统结构系统运行库层p 系统库:连接框架层与Linux内核层的重要纽带,框架层的支撑 Surface Manager:负责管理显示与存取操间互动,负责2D与3D绘图 Media Framework:多媒体库,支持常用的音频、视频格式录制和回放 SQLite:小型的关系型数据库引擎 OpenGL|ES:根据OpenGL ES 1.0API标准实现的3D绘图函数库 WebKit:网页浏览器的软件引擎 SSL:在Andorid上通信过程中实现握手 Libc:从BSD继承的标准C系统库,为基于embedded linux的设备定制p 核心库:提供了Java语言API中的大多数功能,同时也包含
5、了Android的一些核心API,如android.os、android.media等等。p Dalvik虚拟机:一种基于寄存器的Java虚拟机,而不是传统的基于栈的虚拟机。每个Android程序都有一个Dalivik虚拟机的实例,并在该实例中执行。Dalvik虚拟机进行了内存资源使用的优化,执行.dex文件Android系统结构Linux内核层pAndroid是基于Linux2.6内核,其核心系统服务如安全性、内存管理、进程管理、网路协议以及驱动模型都依赖于Linux内核。p除Linux标准驱动外,需要一些专有驱动,如Binder、Log、Ashmem等Android系统版本发布日期发布日期
6、版本号版本号代号代号重大变化重大变化2008.92008.91.12009.42009.41.5Cupcake 纸杯蛋糕屏幕虚拟键盘2009.92009.91.6Donut 甜甜圈2009.102009.102.0/.1Eclair 松饼动态桌面、HTML52010.52010.52.2/2.2.1Froyo 冻酸奶3G网络、Flash支持2010.122010.122.3/2.4Gingerbread 姜饼NFC2011.22011.23.0/3.1/3.2Honeycomb 蜂巢针 对 平 板 进 行 优 化,Fragment2011.102011.104.0Ice Cream Sandw
7、ich冰激凌三明治全新UI2012.62012.64.1Jelly Bean果冻豆2012.102012.104.2Jelly Bean 果冻豆支持Miracast无线显示共享功能待定待定4.4Kit Kat 奇巧巧克力Android系统优势完全开放的系统,吸引越来越多的厂家和消费者,将催生众多硬件支持和程序选择无缝结合Google应用,如Google地图、邮件、搜索等互联网的重要服务。开源软件系统,功能强大,支持众多软件,如Webkit浏览器、播放器、FLASH等。高效的JAVA虚拟机Dalvik,支持JAVA,速度快。Android系统劣势 版本更新快,如何保持前后兼容 完全开发的系统,如
8、何保持不同厂家之间兼容Android系统开发涉及三个层次:Android系统移植开发系统移植开发 芯片厂家会提供基于其样板的SDK,拿到其样板及SDK后,需要针对我司的具体硬件及产品业务做如下工作:fastboot移植(DDR参数/启动流程)、Recovery、设备驱动、工厂菜单、媒体播放、音视频兼容性等 Android子系统开发子系统开发 涉及到系统各个层次:封装硬件抽象层、增加C/C+本地业务库、定义Java层所需要的类、将本地业务库的功能接口封装成JNI、结合Java类和JNI、提供应用程序调用的Java框架类等 Android应用程序开发应用程序开发 根据具体产品的业务需求定制开发特定
9、apk eclipse环境搭建、系统调试(Logcat、DDMS等)Android目录结构Android开发环境搭建Android应用开发环境搭建Android系统开发环境搭建Android应用开发环境搭建Android应用开发环境搭建 JDK安装安装 http:/ Eclipse安装安装 http:/www.eclipse.org/downloads下载最新eclipse并安装,亦可拷贝已经安装好的eclipse使用 Android SDK安装安装 http:/www.eclipse.org/downloads下载Android SDK,直接解压运行SDK Setup.exe,点击Avail
10、able Packages。如没出现可安装包,点击Settings,选中Misc中的“Force https:/.”这项,再点击Available Packages。选择希望安装的SDK及其文档或其它包,开始下载安装所选包。国内已屏蔽了Android,下载经常失败,可拷贝已经安装好的直接使用 ADT安装安装 打开 Eclipse IDE,进入菜单中的“Help”-“Install New Software”,点击Add.按钮,弹出对话框要求输入Name和Location:Name自己取,Location输入http:/dl- Tool,安装。完成后选择Window Preferences.在左
11、边的面板选择Android,然后在右侧点击Browse.并选中SDK路径 可选择已经安装好的同事拷贝使用 创建创建AVD 为使Android应用程序可以在模拟器上运行,必须创建AVD。在Eclipse中。选择Windows Android SDK and AVD Manager进行创建Android系统开发环境搭建Android系统开发环境搭建 Android系统开发环境要求:操作系统:Ubuntu(版本号=10.04)硬盘空间:10GB JDK 版本:1.6(根据android版本而定)Python 版本:2.42.7 Android系统开发环境搭建 安装依赖包:64位机器:$sudo ap
12、t-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g+-multilib mingw32 tofrodos 32位机器:$sudo apt-get install git-core gnupg flex bison gperf build-essential
13、zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev libx11-dev libgl1-mesa-dev tofrodos Android系统开发环境搭建安装JDK:步骤 1 更新安装包$sudo apt-get update 步骤 2 安装 jdk 1.6$sudo apt-get install sun-java6-jdk 用户按提示操作即可。步骤 3 检查安装结果 确认JDK 版本号正确$java-version java version 1.6.0_26 Java(TM)SE Runtime Environme
14、nt(build 1.6.0_26-b03)Java HotSpot(TM)64-Bit Server VM(build 20.1-b02,mixed mode)Android系统开发环境搭建 安装python:python工具的安装:$sudo apt-get install python Android系统开发环境搭建 安装交叉编译工具链(hisilicon)当第一次拿到海思开发包,或遇到发布包中交叉编译工具链的版本更新时,需重新安装编译工具链 交叉编译工具链:arm-hisiv200-linux 在交叉工具链安装包目录下执行命令:./cross.install Android系统开发环境
15、搭建 编译源码(hisilicon)解压海思提供的开发包 进入解压后的目录,设置编译环境 /home/work/ics$source build/envsetup.sh /home/work/ics$lunch full_godbox-eng 编译环境只需设置一次即可进行多次编译。但切换 shell 环境,则需要重新设置。编译 /home/work/ics$./mk-all.sh 4(并发线程数,(并发线程数,根据服务器性能自行调整)根据服务器性能自行调整)Android系统开发环境搭建 编译后在out目录下会生成二进制文件:outtargetproductgodbox:userdata.ic
16、s.yaffs2_xkyb system.ics.yaffs2_xkyb recovery.img kernel x 表示NAND FLASH的页大小page size(bytes为单位)y 表示ECC 校验位数 目前板子配置是2k1bAndroid系统开发环境搭建 -烧写Flash 将bootablebootloaderfastboot3.0fastboot_burn目录拷贝出来,里面包含烧录工具FastBoot3.1.8.exe 准备好tftp升级工具,并将编译源码中生成的文件拷贝到tftp升级工具所指向的目录下 准备板子及串口线,准备进行烧录Android系统开发环境搭建 -烧写u-bo
17、otAndroid系统开发环境搭建 -烧写kernel及system等 使用李铁柱发布的tftp工具,将kernel及system、userdata、recovery等按照划分的各个分区的Flash地址进行烧录。参考分区如下:Android系统开发环境搭建 -配置bootargs进入u-boot,在串口下输入如下命令:set bootcmd nand read 82000000 2e00000 a00000;bootm 0 x82000000set appargs mem=764M vmalloc=600M console=ttyAMA0,115200 mtddev=blackbox andr
18、oidboot.console=ttyAMA0 mtdparts=hinand:1024K(fastboot),512K(bootargs),512K(envback),512K(cfg),512K(cfgback),3840K(recovery),128K(deviceinfo),128K(baseparam),4M(logo),4M(fastplay),30M(cache),1M(misc),10M(kernel),180M(system),128M(userdata),10M(commondata),1M(blackbox),136M(sdcard)set recoverybootarg
19、s mem=808M console=ttyAMA0,115200 mtdparts=hinand:1024K(fastboot),512K(bootargs),512K(envback),512K(cfg),512K(cfgback),3840K(recovery),128K(deviceinfo),128K(baseparam),4M(logo),4M(fastplay),30M(cache),1M(misc),10M(kernel),180M(system),128M(userdata),10M(commondata),1M(blackbox),136M(sdcard)save烧录成功,
20、重启机顶盒即可启动Android开发环境搭建 至此,Android开发环境搭建成功。参考文档:Android系统启动流程分析Android启动流程分析Android启动流程Android从Linux系统启动有4个步骤;Init进程启动 Native服务启动 System Server服务启动 Launcher启动Android启动流程 第一步:第一步:initial进程进程(system/core/init)Init进程,它是一个由内核启动的用户级进程。内核启动后,启动一个用户级程序init的方式,完成引导进程。init始终是第一个进程.Init进程起来后根据init.rc和init.xxx.
21、rc脚本文件建立了几个基本的服务:servicemanamger zygote 。Android启动流程 第二步第二步 Zygote Servicemanager和zygote进程奠定了Android的基础。Zygote起来后会建立起真正的Android运行空间。Zygote就建立后,利用Socket通讯,接收ActivityManangerService的请求,Fork应用程序。Android启动流程 第三步第三步 SystemServer Zygote进程启动后会fork一个进程System Server。Android的所有服务循环框架都是建立System Server上。System Server会建立很多服务,并将服务添加到Service Manager中进行统一管理。Android启动流程 第四步第四步 Launcher启动启动 在System Server启动完所有的Android服务后,会通知各个服务,系统已经就绪。Launcher就是在ActivityManagerService接收到通知后建立的。实例演示Hi3716C盒子启动流程及Init.rc分析