【文档说明】Android系统架构、开发环境搭建及启动流程分析解析课件.ppt,共(40)页,3.003 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92572.html
以下为本文档部分文字说明:
Android系统结构及平台搭建Android系统结构Android开发环境搭建Android启动流程分析Android系统结构Android系统结构基于Linux的自由及开源的操作系统。Android操作系统最初由AndyRubin开发。2008年10月
第一部Android智能手机发布。2011年第1季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2012年11月,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。2013年09月24日谷歌开发的操作系统Andr
oid迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。目前最流行的智能手机开发平台,现已普及到平板电脑、游戏机、数码相机、OTT机顶盒、智能电视等各终端产品。Android系统结构一个好的开发平台一定有一个成熟、稳定
的系统架构来支撑Android平台系统结构从上到下分为四层:应用层框架层系统运行库Linux内核层Android系统结构应用层Android不仅仅是操作系统,也包含了许多应用程序,如SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等。用Java语言编写,基于框架层
API实现。可被开发人员开发的其他应用程序替换。Android系统结构框架层可重用的软件组件,简化应用程序的开发,向应用提供API。ActivityManager(活动管理器)管理各个应用程序生命周期
以及通常的导航回退功能WindowManager(窗口管理器)管理所有的窗口程序ContentProvider(内容提供器)使得不同应用程序之间存取或者分享数据ViewSystem(视图系统)构建应用程序的基本组件Notificati
onManager(通告管理器)使应用程序可以在状态栏中显示自定义的提示信息PackageManager(包管理器)Android系统内的程序管理ResourceManager(资源管理器)提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等Andro
id系统结构系统运行库层系统库:连接框架层与Linux内核层的重要纽带,框架层的支撑–SurfaceManager:负责管理显示与存取操间互动,负责2D与3D绘图–MediaFramework:多媒体库,支持常用的音频、视频格式录制和回放–SQLite:小型的
关系型数据库引擎–OpenGL|ES:根据OpenGLES1.0API标准实现的3D绘图函数库–WebKit:网页浏览器的软件引擎–SSL:在Andorid上通信过程中实现握手–Libc:从BSD继承的标准C系统
库,为基于embeddedlinux的设备定制核心库:提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如android.os、android.net、android.media等等。Dalvik虚拟机:一种基于寄存器的Java虚拟机,而不是传统的基于栈
的虚拟机。每个Android程序都有一个Dalivik虚拟机的实例,并在该实例中执行。Dalvik虚拟机进行了内存资源使用的优化,执行.dex文件Android系统结构Linux内核层Android是基于Linux2.6内核,其核心系统服务如安全性、内存管理、进程管理、网路协议以及
驱动模型都依赖于Linux内核。除Linux标准驱动外,需要一些专有驱动,如Binder、Log、Ashmem等Android系统版本发布日期版本号代号重大变化2008.91.12009.41.5Cupcake纸杯蛋糕
屏幕虚拟键盘2009.91.6Donut甜甜圈2009.102.0/.1Eclair松饼动态桌面、HTML52010.52.2/2.2.1Froyo冻酸奶3G网络、Flash支持2010.122.3/2.4Gingerbread姜饼NFC2011.23.0
/3.1/3.2Honeycomb蜂巢针对平板进行优化,Fragment2011.104.0IceCreamSandwich冰激凌三明治全新UI2012.64.1JellyBean果冻豆2012.104.2JellyBean果冻豆支持Miracast无线显示共享功能
待定4.4KitKat奇巧巧克力Android系统优势完全开放的系统,吸引越来越多的厂家和消费者,将催生众多硬件支持和程序选择无缝结合Google应用,如Google地图、邮件、搜索等互联网的重要服务。开源软件系统,功能强大,支持众多软件,如Webkit浏览器、播放器、FLASH等。高
效的JAVA虚拟机Dalvik,支持JAVA,速度快。Android系统劣势版本更新快,如何保持前后兼容完全开发的系统,如何保持不同厂家之间兼容Android系统开发涉及三个层次:Android系统移植开发芯片厂家会提
供基于其样板的SDK,拿到其样板及SDK后,需要针对我司的具体硬件及产品业务做如下工作:fastboot移植(DDR参数/启动流程)、Recovery、设备驱动、工厂菜单、媒体播放、音视频兼容性等Android子系统开发涉及到系统各个层次:封装硬件抽象层、增
加C/C++本地业务库、定义Java层所需要的类、将本地业务库的功能接口封装成JNI、结合Java类和JNI、提供应用程序调用的Java框架类等Android应用程序开发根据具体产品的业务需求定制开发特定apkeclipse环境搭建、系统调试(Logcat、DDMS等)A
ndroid目录结构Android开发环境搭建Android应用开发环境搭建Android系统开发环境搭建Android应用开发环境搭建Android应用开发环境搭建JDK安装http://developers
.sun.com/downloads/下载最新jdk并安装Eclipse安装http://www.eclipse.org/downloads下载最新eclipse并安装,亦可拷贝已经安装好的eclipse使用AndroidSDK
安装http://www.eclipse.org/downloads下载AndroidSDK,直接解压运行SDKSetup.exe,点击AvailablePackages。如没出现可安装包,点击Settings,选中Misc中的“Forcehttps://...”这项,再
点击AvailablePackages。选择希望安装的SDK及其文档或其它包,开始下载安装所选包。国内已屏蔽了Android,下载经常失败,可拷贝已经安装好的直接使用ADT安装打开EclipseIDE,进入菜单中的“Help”-
>“InstallNewSoftware”,点击Add...按钮,弹出对话框要求输入Name和Location:Name自己取,Location输入http://dl-ssl.google.com/android/
eclipse。确定返回后,勾选DDMS、DevelopmentTool,安装。完成后选择Window>Preferences...在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径可选择已经安装好的同事拷贝使用创建AVD为
使Android应用程序可以在模拟器上运行,必须创建AVD。在Eclipse中。选择Windows>AndroidSDKandAVDManager进行创建Android系统开发环境搭建Android系统开发环境搭建•Android系统开发环境要求:–操作系统:Ubuntu(版本
号>=10.04)–硬盘空间:10GB–JDK版本:1.6(根据android版本而定)–Python版本:2.4~2.7Android系统开发环境搭建•安装依赖包:–64位机器:$sudoapt-getinstallgit-coregnupgflexbisongperfbuild-essent
ial\zipcurlzlib1g-devlibc6-devlib32ncurses5-devia32-libs\x11proto-core-devlibx11-devlib32readline5-devlib32z-dev\libgl1-mesa-
devg++-multilibmingw32tofrodos–32位机器:$sudoapt-getinstallgit-coregnupgflexbisongperfbuild-essential\zipcurlzlib1g-devlibc6-
devlibncurses5-dev\x11proto-core-devlibx11-dev\libgl1-mesa-devtofrodosAndroid系统开发环境搭建•安装JDK:–步骤1更新安装包$sudoapt-g
etupdate–步骤2安装jdk1.6$sudoapt-getinstallsun-java6-jdk用户按提示操作即可。–步骤3检查安装结果确认JDK版本号正确$java-versionjavaversion"1.6.0_26"Java(TM)SERuntimeEnvironment(b
uild1.6.0_26-b03)JavaHotSpot(TM)64-BitServerVM(build20.1-b02,mixedmode)Android系统开发环境搭建•安装python:–python工具的安装:$sudoapt-getinstallpython
Android系统开发环境搭建•安装交叉编译工具链(hisilicon)当第一次拿到海思开发包,或遇到发布包中交叉编译工具链的版本更新时,需重新安装编译工具链•交叉编译工具链:arm-hisiv200-linux•在交叉工具链安装包目录下执行命令:./cross.in
stallAndroid系统开发环境搭建•编译源码(hisilicon)–解压海思提供的开发包–进入解压后的目录,设置编译环境/home/work/ics$sourcebuild/envsetup.sh/home/
work/ics$lunchfull_godbox-eng编译环境只需设置一次即可进行多次编译。但切换shell环境,则需要重新设置。–编译/home/work/ics$./mk-all.sh4(并发线程数,根据服务器性能自行调整)Andro
id系统开发环境搭建•编译后在out目录下会生成二进制文件:out\target\product\godbox:userdata.ics.yaffs2_xkybsystem.ics.yaffs2_xkybrecovery.imgkernelx表示
NANDFLASH的页大小pagesize(bytes为单位)y表示ECC校验位数目前板子配置是2k1bAndroid系统开发环境搭建----烧写Flash•将bootable\bootloader\
fastboot3.0\fastboot_burn目录拷贝出来,里面包含烧录工具FastBoot3.1.8.exe•准备好tftp升级工具,并将编译源码中生成的文件拷贝到tftp升级工具所指向的目录下•准备板子
及串口线,准备进行烧录Android系统开发环境搭建----烧写u-bootAndroid系统开发环境搭建----烧写kernel及system等•使用李铁柱发布的tftp工具,将kernel及system、userdata、recove
ry等按照划分的各个分区的Flash地址进行烧录。•参考分区如下:Android系统开发环境搭建----配置bootargs•进入u-boot,在串口下输入如下命令:–setbootcmd'nandread820000002e00000a00000;bootm0x82000000'––
setappargs'mem=764Mvmalloc=600Mconsole=ttyAMA0,115200mtddev=blackboxandroidboot.console=ttyAMA0mtdparts=hinand:1024K(fastboot),512K(bootargs),51
2K(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)'––setrecoverybootargs'mem=808Mconsole=t
tyAMA0,115200mtdparts=hinand:1024K(fastboot),512K(bootargs),512K(envback),512K(cfg),512K(cfgback),3840K(recovery),128K(de
viceinfo),128K(baseparam),4M(logo),4M(fastplay),30M(cache),1M(misc),10M(kernel),180M(system),128M(userdata),10M(commondata),1M(blackbox),136M(
sdcard)'––save•烧录成功,重启机顶盒即可启动Android开发环境搭建•至此,Android开发环境搭建成功。•参考文档:Android系统启动流程分析Android启动流程分析Android启动流程Android从Linux系统
启动有4个步骤;•Init进程启动•Native服务启动•SystemServer服务启动•Launcher启动Android启动流程第一步:initial进程(system/core/init)•Init进程,它是一个由内核
启动的用户级进程。内核启动后,启动一个用户级程序init的方式,完成引导进程。init始终是第一个进程.•Init进程起来后根据init.rc和init.xxx.rc脚本文件建立了几个基本的服务:servicemanamgerzygote。。。Android启动流程第二步Zyg
ote•Servicemanager和zygote进程奠定了Android的基础。Zygote起来后会建立起真正的Android运行空间。•Zygote就建立后,利用Socket通讯,接收ActivityManangerService的请求,For
k应用程序。Android启动流程第三步SystemServer•Zygote进程启动后会fork一个进程SystemServer。Android的所有服务循环框架都是建立SystemServer上。SystemSer
ver会建立很多服务,并将服务添加到ServiceManager中进行统一管理。Android启动流程第四步Launcher启动•在SystemServer启动完所有的Android服务后,会通知各个服务,系统已
经就绪。Launcher就是在ActivityManagerService接收到通知后建立的。实例演示Hi3716C盒子启动流程及Init.rc分析