您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > android开发与架构设计解析
ANDROIDAndroid架构1、架构图直观2、架构详解2.1、LinuxKernel2.1、AndroidRuntime2.3、Libraries2.4、ApplicationFramework2.5、Applications1、架构图直观2、架构详解2.1、LinuxKernelAndroid基于Linux2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。LinuxKernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。知道OSI/RM,便知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各司其职,各层提供固定的SAP(ServiceAccessPoint),专业点可以说是高内聚、低耦合。2.2、AndroidRuntimeAndroid包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。Dalvik虚拟机设计成,在一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx是一套工具,可以將Java.class转换成.dex格式。一个dex文件通常会有多个.class。由于dex有時必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。Dalvik虚拟机依赖于Linux内核提供基本功能,如线程和底层内存管理。2.3、LibrariesAndroid包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(applicationframework)暴露给开发者。下面列出一些核心库:•系统C库——标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备•媒体库——基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG•界面管理——管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层•LibWebCore——新式的Web浏览器引擎,驱动Android浏览器和内嵌的web视图•SGL——基本的2D图形引擎•3D库——基于OpenGLES1.0APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅•FreeType——位图和矢量字体渲染•SQLite——所有应用程序都可以使用的强大而轻量级的关系数据库引擎•2.4、ApplicationFramework通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。所有的应用程序其实是一组服务和系统,包括:•视图(View)——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器•内容提供者(ContentProviders)——使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据•资源管理器(ResourceManager)——提供访问非代码资源,如本地化字符串、图形和布局文件•通知管理器(NotificationManager)——使所有的应用程序能够在状态栏显示自定义警告•活动管理器(ActivityManager)——管理应用程序生命周期,提供通用的导航回退功能2.5、ApplicationsAndroid装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。环境搭建及HelloWorld1、环境搭建1.1、JDK安装1.2、Eclipse安装1.3、AndroidSDK安装1.4、ADT安装1.5、创建AVD2、HelloWorld1、环境搭建1.1、JDK安装如果你还没有JDK的话,先去下载,接下来的工作就是安装提示一步一步走。设置环境变量步骤如下:a.我的电脑-属性-高级-环境变量-系统变量中添加以下环境变量:b.JAVA_HOME值为:D:\ProgramFiles\Java\jdk1.6.0_18(你安装JDK的目录)c.CLASSPATH值为:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin;d.Path:在开始追加%JAVA_HOME%\bin;NOTE:前面四步设置环境变量对搭建Android开发环境不是必须的,可以跳过。安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java–version查看JDK的版本信息。出现类似下面的画面表示安装成功了:1.2、Eclipse安装如果你还没有Eclipse的话,可以先去下载,下载如下图所示的EclipseIDEforJavaDevelopers(92M)的win32bit版:解压之后既可使用。1.3、AndroidSDK安装在AndroidDevelopers下载android-sdk_r05-windows.zip,下载完成后解压到任意路径。•运行SDKSetup.exe,点击AvailablePackages。如果没有出现可安装的包,请点击Settings,选中Misc中的Forcehttps://...这项,再点击AvailablePackages。•选择希望安装的SDK及其文档或者其它包,点击InstallationSelected、AcceptAll、InstallAccepted,开始下载安装所选包。•在用户变量中新建PATH值为:AndroidSDK中的tools绝对路径(本机为D:\AndroidDevelop\android-sdk-windows\tools)。“确定”后,重新启动计算机。重启计算机以后,进入cmd命令窗口,检查SDK是不是安装成功。运行android–h如果有类似以下的输出,表明安装成功:1.4、ADT安装打开EclipseIDE,进入菜单中的Help-InstallNewSoftware点击Add...按钮,弹出对话框要求输入Name和Location:Name自己随便取,Location输入。如下图所示:确定返回后,在workwith后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有DeveloperTools,展开它会有AndroidDDMS和AndroidDevelopmentTool,勾选他们。如右图所示:完成之后:»选择WindowPreferences...»在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为:D:\AndroidDevelop\android-sdk-windows»点击Apply、OK。配置完成。1.5、创建AVD为使Android应用程序可以在模拟器上运行,必须创建AVD。a、在Eclipse中。选择WindowsAndroidSDKandAVDManagerb、点击左侧面板的VirtualDevices,再右侧点击Newc、填入Name,选择Target的API,SDCard大小任意,Skin随便选,Hardware目前保持默认值d、点击CreateAVD即可完成创建AVD注意:如果你点击左侧面板的VirtualDevices,再右侧点击New,而target下拉列表没有可选项时,这时候你:a)点击左侧面板的AvailablePackages,在右侧勾选,如下图所示:b)然后点击InstallSelected按钮,接下来就是按提示做就行了要做这两步,原因是在1.3、AndroidSDK安装中没有安装一些必要的可用包(AvailablePackages)。2、HelloWorlda.通过File-New-Project菜单,建立新项目AndroidProjectb.然后填写必要的参数,如下图所示:(注意这里我勾选的是GoogleAPIs,你可以选你喜欢的,但你要创建相应的AVD)c.点击Finish后,点击Eclipse的Run菜单选择RunConfigurations…d.选择“AndroidApplication”,点击在左上角(按钮像一张纸上有个“+”号)或者双击“AndroidApplication”,有个新的选项“New_configuration”(可以改为我们喜欢的名字)。e.在右侧Android面板中点击Browse…,选择HelloWorldf.在Target面板的Automatic中勾选相应的AVD,如果没有可用的AVD的话,你需要点击右下角的Manager…,然后新建相应的AVD。如下图所示:g.然后点Run按钮即可,运行成功的话会有Android的模拟器界面,如下图所示:相关参数的说明:A.ProjectName:包含这个项目的文件夹的名称。B.PackageName:包名,遵循JAVA规范,用包名来区分不同的类是很重要的,我用的是helloworld.test。C.ActivityName:这是项目的主类名,这个类将会是Android的Activity类的子类。一个Activity类是一个简单的启动程序和控制程序的类。它可以根据需要创建界面,但不是必须的。D.ApplicationName:一个易读的标题在你的应用程序上。E.在选择栏的Usedefaultlocation选项,允许你选择一个已存在的项目。HelloWorld项目的目录结构1、HelloWorld项目的目录结构•1.1、src文件夹•1.2、gen文件夹•1.3、Android2.1文件夹•1.4、assets•1.5、res文件夹•1.6、AndroidManifest.xml•1.7、default.properties1、HelloWorld项目的目录结构(这个HelloWorld项目是基于Android2.1的)在Eclipse的左侧展开HelloWorld项目,可以看到如下图的目录结构:1.1、src文件夹src,sourcecode该文件夹是放项目的源代码的。打开HelloWorld.java文件会看到如下代码:packagehelloworld.test;importandroid.app.Activity;importandroid.os.Bundle;publicclassHelloWorldextendsActivity{/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);}}可以知道:我们新建一个简单的HelloWorld项目,系统为我们生成了一个HelloWorld.java文件。他导入了两个类android.app.Activity
本文标题:android开发与架构设计解析
链接地址:https://www.777doc.com/doc-3351278 .html