您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 计算机应用/办公自动化 > 手机开发培训 02_Android系统的开发综述
Android系统的开发综述Android系统的开发综述第一部分Android的系统架构第二部分Android源代码的开发环境第一部分Android的系统架构1.1软件结构1.2Android的工具1.1软件结构第一层:Linux操作系统及驱动第二层:本地框架和Java运行环境第三层:Java框架第四层:Java应用程序1.1软件结构Android的软件结构的几个层次:1.操作系统层(Linux,相关驱动)2.库(Libraries)和运行环境(RunTime)3.应用程序框架(ApplicationFramework)4.应用程序(Application)操作系统层使用C语言编写,运行于内核空间。底层库和JAVA虚拟机使用C语言编写,运行于用户空间。JAVA框架和JAVA应用程序使用C语言编写,运行于用户空间。1.1软件结构Android的第1层次由C语言实现,第2层次由C和/C++实现,第3、4层次主要由Java代码实现。第1层次和第2层次之间,从Linux操作系统的角度来来看,是内核空间与用户空间的分界线,第1层次运行于内核空间,第2、3、4层次运行于用户空间。第2层次和第3层次之间,是本地代码层和Java代码层的接口。第3层次和第4层次之间,是Android的系统API的接口,对于Android应用程序的开发,第3层次以下的内容是不可见的,仅考虑系统API即可。1.1软件结构Linux操作系统和驱动:Android的核心系统服务依赖于Linux2.6内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的抽象层。Android本地框架(C/C++):Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。系统C库:一个从BSD继承来的标准C系统函数库,专门为基于嵌入式linux的设备定制的。媒体库:基于PacketVideoOpenCORE;该库支持多种常用的音频、视频格式回放和录制。SurfaceManager:对显示子系统的管理,图层功能。WebCore:一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。SGL:Skia的2D图形引擎3Dlibraries:基于OpenGL实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。FreeType:位图(bitmap)和矢量(vector)字体显示。1.1软件结构Android运行库:Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中的dx工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。1.1软件结构1.1软件结构Android应用程序框架:开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。隐藏在每个应用后面的是一系列的服务和系统,其中包括;丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(textboxes),按钮(buttons),甚至可嵌入的web浏览器。内容提供器(ContentProviders):使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据资源管理器(ResourceManager):提供非代码资源的访问,如本地字符串,图形,和布局文件(layoutfiles)。通知管理器(NotificationManager):使得应用程序可以在状态栏中显示自定义的提示信息。活动管理器(ActivityManager):用来管理应用程序生命周期并提供常用的导航回退功能。1.1软件结构Android应用程序:Android会同一系列核心应用程序包一起发布,这些应用程序包也就是预置的应用程序,主要包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。1.2Android的工具aapt(AndroidAssetPackagingTool)用于建立Zip兼容的包(zip,jar,apk),也可用于编译资源到二进制的assets。abd(AndroidDebugBridge,Android调试桥)使用Adb工具可以在模拟器或设备上安装应用程序的.apk文件,并从命令行访问模拟器或设备。也可以用它把Android模拟器或设备上的应用程序代码和一个标准的调试器连接在一起。$./out/host/linux-x86/bin/adbshell$./out/host/linux-x86/bin/adbinstallXXX.apk$./out/host/linux-x86/bin/adbpush{host_path}{target_path}$./out/host/linux-x86/bin/adbpull{target_path}{host_path}android工具一个脚本用于创建和管理AndroidVirtualDevices(AVDs)。1.2Android的工具AIDL工具(AndroidInterfaceDescriptionLanguage,Android接口描述语言)可以生成进程间的接口的代码,诸如service可能使用的接口。AVDs(AndroidVirtualDevices,Android虚拟设备)用于配置仿真器的选项,使用实际的设备。DDMS(DalvikDebugMonitorService,Dalvik调试监视器服务)这个工具集成了Dalvik,能够在模拟器或者设备上管理进程并协助调试。可以使用它杀死进程,选择某个特定的进程来调试,产生跟踪数据,观察堆(heap)和线程信息,截取模拟器或设备的屏幕画面,还有更多的功能。1.2Android的工具dxDx工具将.class字节码(bytecode)转换为Android字节码(保存在.dex文件中)。Draw9-patchDraw9-patch工具允许使用所见即所得(WYSIWYG)的编辑器轻松地创建NinePatch图形。Emulator(模拟器)它是在的计算机上运行的一个虚拟移动设备。可以使用模拟器来在一个实际的Android运行环境下设计,调试和测试的应用程序。HierarchyViewer(层级观察器)层级观察器工具允许调试和优化的用户界面。它用可视的方法把的视图(view)的布局层次展现出来,此外还给当前界面提供了一个具有像素栅格(grid)的放大镜观察器。1.2Android的工具mksdcard帮助创建磁盘映像(diskimage),可以在模拟器环境下使用磁盘映像来模拟外部存储卡(例如SD卡)。MonkeyMonkey是在模拟器上或设备上运行的一个小程序,它能够产生为随机的用户事件流,例如点击(click),触摸(touch),挥手(gestures),还有一系列的系统级事件。可以使用Monkey来给正在开发的程序做随机的,但可重复的压力测试。sqlite3sqlite3工具能够方便地访问SQLite数据文件。Traceview这个工具可以将的Android应用程序产生的跟踪日志(tracelog)转换为图形化的分析视图第二部分Android源代码的开发环境2.1源代码结构2.2编译Android2.3运行Android2.1源代码结构开发Android主机环境的需求:Git工具Repo工具Java的JDK主机编译工具Ubuntu:$sudoapt-getinstallgit-coregnupgsun-java5-jdkflexbisongperflibsdl-devlibesd0-devlibwxgtk2.6-devbuild-essentialzipcurllibncurses5-devzlib1g-dev2.1源代码结构获取Android完全的源代码:初始化代码仓库:$repoinit-ugit://android.git.kernel.org/platform/manifest.git获取代码:$reposync初始化指定的版本:$repoinit-ugit://android.git.kernel.org/platform/manifest.git-brelease-1.0$repoinit-ugit://android.git.kernel.org/platform/manifest.git-bandroid-sdk-1.5_r22.1源代码结构同步单个工程代码:$reposync{project_name}获取一个工程的代码:$gitclonegit://android.git.kernel.org/+projectpath例如,获取通用内核的代码:$gitclonegit://android.git.kernel.org/kernel/common.git2.1源代码结构$repoinit-ugit://android.git.kernel.org/platform/manifest.gitGettingrepo...fromgit://android.git.kernel.org/tools/repo.gitGettingmanifest...fromgit://android.git.kernel.org/platform/manifest.gitFromgit://android.git.kernel.org/platform/manifest*[newbranch]android-1.5-origin/android-1.5*[newbranch]android-1.5r2-origin/android-1.5r2*[newbranch]android-1.5r3-origin/android-1.5r3*[newbranch]android-1.6_r1-origin/android-1.6_r1*[newbranch]android-sdk-1.5-pre-origin/android-sdk-1.5-pre*[newbranch]android-sdk-1.5_r1-origin/android-sdk-1.5_r1*[newbranch]android-sdk-1.5_r3-origin/android-sdk-1.5_r3*[newbranch]android-sdk-1.6_r1-origin/android-sdk-1.6_r1*[newbranch]cdma-import-origin/cdma-import*[newbranch]cupcake-origin/cupcake*[newbranch]cupcake-release-origin/cupcake-release*[newbranch]donut-origin/donut*[newbranch]master-origin/master*[newbranch]release-1.0-origin/release-1.0*[newtag]android-1.5-android-1.5*[newtag]android-1.5r2-android-1.5r2*[newta
本文标题:手机开发培训 02_Android系统的开发综述
链接地址:https://www.777doc.com/doc-8527803 .html