Android 系统目录结构

Android 系统目录结构
Android 系统目录结构

在android-mast\out\target\product\generic\下有个system目录,其包含内容简介如下:

\system\app

这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件,在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是\data\文件夹中。

\system\app\AlarmClock.apk 闹钟

\system\app\Browser.apk 浏览器

\system\app\Bugreport.apk Bug报告

\system\app\Calculator.apk 计算器

\system\bin

这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,里面主要是Linux系统自带的组件:

\system\bin\am

\system\bin\app_process 系统进程

\system\bin\dalvikvm Dalvik虚拟机宿主

\system\bin\dbus-daemon 系统BUS总线监控

\system\bin\debuggerd 调试器

\system\bin\debug_tool 调试工具

\system\bin\dexopt DEX选项

\system\bin\dhcpcd DHCP服务器

\system\etc

从文件夹名称来看保存的都是系统的配置文件,比如APN接入点设置等核心配置。

\system\etc\apns-conf.xml APN接入点配置文件

\system\etc\AudioFilter.csv 音频过滤器配置文件

\system\etc\AudioPara4.csv

\system\etc\bookmarks.xml 书签数据库

\system\etc\dbus.conf 总线监视配置文件

\system\fonts

字体文件夹,除了标准字体和粗体、斜体外可以看到文件体积最大的可能是中文字库,或一些unicode字库,从T-Mobile G1上可以清楚的看到显示简体中文正常,其中DroidSansFallback.ttf文件大小

\system\fonts\DroidSans-Bold.ttf

\system\fonts\DroidSans.ttf

\system\fonts\DroidSansFallback.ttf

\system\fonts\DroidSansMono.ttf

\system\framework

framework主要是一些核心的文件,从后缀名为jar可以看出是是系统平台框架。

\system\framework\am.jar

\system\framework\am.odex

\system\framework\android.awt.jar AWT库

\system\framework\android.awt.odex

\system\lib

lib目录中存放的主要是系统底层库,如平台运行时库。

\system\lib\libaes.so

\system\lib\libagl.so

\system\lib\libandroid_runtime.so Android运行时库

\system\lib\libandroid_servers.so 系统服务组件

\system\lib\libaudio.so 音频处理

\system\lib\libaudioeq.so EQ均衡器

\system\lib\libaudioflinger.so 音频过滤器

\system\lib\libbluetooth.so 蓝牙组件

\system\lib\libc.so

\system\lib\libcamera.so 超相机组件

\system\lib\libcameraservice.so

\system\lib\libcorecg.so

\system\lib\libcrypto.so 加密组件

\system\media

铃声音乐文件夹,除了常规的铃声外还有一些系统提示事件音\system\media\audio

\system\media\audio\alarms 闹铃音

\system\media\audio\notifications 提示音

\system\media\audio\ringtones 铃声

\system\media\audio\ui 界面操作事件音

\system\sounds

默认的音乐测试文件,仅有一个test.mid文件,用于播放测试的文件。\system\sounds\test.mid

\system\usr

用户文件夹,包含共享、键盘布局、时间区域文件等。

\system\usr\keychars

\system\usr\keylayout

\system\usr\share

\system\usr\srec

Android系统架构详解

Android系统架构详解 Android系统架构由5部分组成, 分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。 1、Linux Kernel Android relies on Linux version 2.6 for core system services such as security, memory management, process management, network stack, and driver model. The kernel also acts as an abstraction layer between the hardware and the rest of the software stack. Android基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各尽其职,各层提供固定的SAP(Service Access Point),专业点可以说是高内聚、低耦合。如果你只是做应用开发,就不需要深入了解Linux Kernel层。 2、Android Runtime Android includes a set of core libraries that provides most of the functionality available in the core libraries of the Java programming language. Android包括一个核心库的集合,她们提供了Java编程语言的核心库中的绝大多数功能。 Every Android application runs in its own process, with its own instance of the Dalvik virtual

Android系统架构简介

Android系统架构简介 Android系统架构简介 目前Android的Linuxkernel控制包括安全、存储器管理、进程管理、网络堆叠、驱动程序模型等。下载Android源码之前,先要 安装其构建工具Repo来初始化源码。Repo是Android用来辅助Git 工作的一个工具。 应用程序 Android系统是基于Linux内核开发,使用Java作编程语言, 使界面到功能,都有层出不穷的变化,其中Activity等同于J2ME 的MIDlet,一个Activity类别负责创建视窗,一个活动中的 Activity就是在foreground(前景)模式,背景执行的程序叫做Service。两者之间透过由ServiceConnection和AIDL连结,达到 复数程序同时执行的效果。如果执行中的Activity全部画面被其他Activity取代时,该Activity便被停止,甚至被系统清除。 View等同于J2ME的Displayable,程序人员可以透过View类别与“XMLlayout”档将UI放置在视窗上,并可以利用View打造出所 谓的Widgets,其实Widget只是View的一种,所以可以使用xml 来设计layout。至于ViewGroup是各种layout的基础抽象类别,ViewGroup之内还可以有ViewGroup。View的构造函数不需要在Activity中调用,但是Displayable的是必须的,在Activity中,要通过findViewById()来从XML中获取View,Android的View类 的显示很大程度上是从XML中读取的。View与事件息息相关,两者 之间透过Listener结合在一起,每一个View都可以注册eventlistener,例如:当View要处理用户触碰的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于 J2ME的BitMap。 中介软件

Android体系结构

Android体系结构 android 平台大的方面的层次可以划分成三个层次,包括一个操作系统,中间件与应用程序,android 的系统框架图如下: 图中的软件层次自上而下分成4个层次 1. 应用程序(Application) 2. 用用程序框架(Application Framework) 3. 各种类库(Libraries)与android运行时(Adnorid Runtime) 4. 操作系统(OS) 一、应用程序(Application) 应用层就是与用户交互的一个层次,用户可以瞧得见的一些应用,用户可以操作。这类应用基本都就是通过Java语言编写的独立的能够完成某些功能的应用程序。Android本身提供了桌面(Home),联系人(Contacts),拨打电话(Phone),浏览器(Browers)等很多基本的应用程序。开发人员可以使用应用框架提供的API编写自己的应用程序,普通开发人员要做的事情就就是开应用层的程序提供该广大消费者使用。 二、应用程序框架(Application Framework) 普通开发者可以使用Android基本应用程序使用的系统API,android 应用框架中的各个模块都可以被复用,各种服务也可以被复用,理解了这个机制,开发人员可以更好的更轻松的开发出优秀的android应用。 开发过程中常用到的基本框架组件如下:

1. 一组View(UI 组件),这些UI组件包括Button(按钮),EidtView(文本框),TextView(标签),List(列表) 等等,灵活运用这些组件可以快速方便的创建良好的用户交互界面。 2. Content Providers(内容提供者),听起来有点抽象,通俗的理解Content Provider 就就是提供一种 服务,通过这种服务应用程序之间可以实现数据的互相访问与共享,比如通讯录的存储就使用了这种服务,其它应用也可以访问通讯录中存储的联系人信息。 3. Resource Manager 顾名思义就就是资源管理,android中的资源很多包括图片,用户界面(Layout xml),字体,颜色,UI组件的Id等等都可以称之为资源,这些丰富的资源,都就是通过Resource Manager来统一进行管理。 4. Notification Manager(消息通知管理),它在不影响用户正常操作与使用设备的时候在状态栏上提供 消息的提示。比如有短信来的时候,android自动会将这个消息提示在状态栏上,用户可以及时的瞧到。 5. Activity Manager(活动管理),Activity管理着应用程序的生命周期,并且控制着应用的导航,扮演控 制器的角色。每个Activity类似于Windows应用中的一个wendow。一般的应用都就是通过一个个Activity 交互构成的。 6. Window Manager(窗口管理),管理所有启动的窗口。 7. Location Manager(位置管理),用来管理地图服务的相关功能。 8. Telephoney Manager(电话管理),用来管理有关的电话的相关功能。 9. Package Manager(包管理),管理所有的安装在android系统内的应用程序。 三、库(Libraries)与运行环境(RunTime) 这部分内容开始涉及底层,开发普通的应用不会直接对这个层进行操作。这层中包含了一组类库(Libraries)与运行时(RunTime), 1. 系统C库(libc),一个从BSD集成来的标准C系统函数库(libc)它就是专门为基于嵌入式Linux的设 备定制的。 2. 媒体库(Media Framework),基于PackeVideo OpenCore,该库支持多种常用的音频,视频格式以及 回放与录制,同时支持静态图像文件。编码格式包括:MPEG4、H、264,MP3、AAC、AMR、JPG、PNG。 3. Surface Manager 对显示子系统的管理,并且为多个应用提供2D,3D图层的无缝融合。 4. WebKit,一个最新的web浏览器引擎,用来支持Andiroid浏览器或者嵌入的web视图。 5. SGL 底层的2D图形引擎。 6. OPENGL|ES,基于OpenGL ES 1、0 APIs实现,该库可以使用硬件3D加速或者使用高度优化的 3D软加速。 7. FreeType,位图(bitmap)与适量(vector)字图显示支持。 8. SQLite,一个对所有应用程序可用,功能强大的轻量级关系型数据库引擎。 9. Core Libraries 该核心库提供了Java编程语言核心库的大多数功能。 10. Dalvik VM, android平台的一个虚拟机,它相当于PC中Java的虚拟机JVM。 四、操作系统(OS) Android 的核心系统服务依赖于Linux 2、6 内核,操作系统为Android提供的服务包括: 1. 安全性(Security)。 2. 内存管理(Memory Management) 3. 进程管理(Process Management) 4. 网络堆栈(Network Stack) 5. 驱动程序模型(Driver Model)包含以下这些常规的驱动程序: (1)Display Driver (2)Keypad Driver

(完整word版)ios与android系统架构

系统包(运行架构) Android Ios Android系统的优先级响应层级是Application(应用层)--Framework(框架层)--Library (运行库及显示)--Kernal(内核层)架构,和显示相关的图形图像处理这一部分属于Library,可以看到到第三位才是它,当触摸屏幕之后Android系统首先会激活应用,框架然后才是屏幕最后是核心架构。 iOS对屏幕反应的优先级是最高的,它的响应顺序依次为Touch(触摸显示)--Media(媒体)--Service(服务)--Core(内核)架构,换句话说当用户只要触摸接触了屏幕之后,系统就会最优先去处理屏幕显示也就是Touch这个层级,然后才是媒体(Media),服务(Service)以及Core架构。 应用程序框架层

Linux内核层 Android是基于Linux2.6内核,其核心系统服务如安全性、内存管理、进程Android 内核分析 一、内核在操作系统中的地位 Android基于Linux操作系统由硬件、系统内核、系统服务和应用程序等四大部分组成。其中内核是核心的部分,其主要作用在于与计算机硬件进行交互实现对硬件的编程控制和接口操作调度访问硬件资源同时向应用程序提供一个高级的执行环境和对硬件的虚拟接口。主要功能包括中断服务程序、进程调度程序、进程地址空间的内存管理、进程间通信。内核与普通应用程序不同,其拥有所有硬件设备的访问权限以及启动时即划分的受保护的内存空间。 二、Android内核和标准的Linux内核一样,Android内核主要实现内存管理、进程调度、进程间通信等功能。 Android内核是在标准Linux内核的基础上修改而成。为了适应嵌入式硬件环境和移动应用程序的开发Android对标准Linux内核进行了一定的修改。经过与标准Linux内核源代码进行详细对比可以发现Android内核与标准Linux内核在文件系统、进程间通信机制、内存管理等方面存在不同。 文件系统不同于桌面系统与服务器,移动设备大多采用的不是硬盘而是采用Flash作为存储介质,因此Android内核中增加了标准Linux内核中没有采纳的YAFFS2文件系统。 YAFFS2按层次结构设计分为文件管理接口、内部实现层和NAND简化了其本身与系统的接口设计能更方便地集成到系统当中。 进程间通信机制Android增加了一种进程间的通信机制IPCBinder,Binder通过守护进程ServiceManager管理系统中的服务,负责进程间的数据交换。各进程通过Binder访问同一块共享内存以达到数据通信的机制。从应用层的角度看进程通过访问数据守护进程获取用于数据交换的程序框架接口,调用并通过接口共享数据,而其他进程要访问数据也只需与程序框架接口进行交互方便了程序员开发需要交互数据的应用程序。 内存管理在内存管理模块Android内核采用了一种不用于标准Linux内核的低内存管理策略。在标准Linux内核当中使用一种叫做OOM(OutofMemory)的低内存管理策略,当内存不足时系统检查所有的进程并对进程进行限制评分获得最高分的进程将被关闭。Android新增加了一种内存共享的处理方式Ashmem。通过Ashmem进程间可以匿名自由共享具名的内存块这种共享方式在标准Linux当中不被支持。经过分析Android内核由标准Linux内核修改而来,因此继承了Linux内核的各种优点保留了标准Linux内核的主体架构。 同时Android按照移动设备的需求在文件系统、内存管理、进程间通信机制、电源管理等方面进行了修改添加相关的驱动程序和一些必要的新功能,但是与大多数精简的嵌入式Linux操作系统相比Android很大程度上保留了标准Linux的基本架构,因此Android系统应用范围更加广泛拓展性更强。

安卓系统文件夹结构及其文件解析(详细)

安卓系统文件夹及其文件解析 打开Android文件管理器,会发现里面数十个英文名称命名的文件夹罗列其中,很多功能我们可以从其名字上略有所知,内部大批量的文件却让我们有些一头雾水。这些文件是什么?有什么用?我们能不能删?这些都是我们脑中充满疑问的。现在将将Android手机内部文件夹的架构和各文件的功能描述介绍给大家,让大家自己手机的内部资源有个比较透彻的理解,同时也避免了用户误删造成的数据丢失和系统崩溃。 【文件夹功能简介】 \system\app 这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是\data\文件夹中。 \system\bin 这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,里面主要是Linux 系统自带的组件(命令) \system\etc 从文件夹名称来看保存的都是系统的配置文件,比如APN接入点设置等核心配置。 \system\fonts 字体文件夹,除了标准字体和粗体、斜体外可以看到文件体积最大的可能是中文字库,或一些unicode字库,从T-Mobile G1上可以清楚的看到显示简体中文正常,其中DroidSansFallback.ttf文件大小。 \system\framework framework主要是一些核心的文件,从后缀名为jar可以看出是是系统平台框架。 \system\lib lib目录中存放的主要是系统底层库,一些so文件,如平台运行时库。 \system\media \system\media\audio 铃声音乐文件夹,除了常规的铃声外还有一些系统提示事件音。 \system\sounds 默认的音乐测试文件,仅有一个test.mid文件,用于播放测试的文件。 \system\usr 用户文件夹,包含共享、键盘布局、时间区域文件等。 \system\app 这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是\data\文件夹中。 \system\app\AlarmClock.apk 闹钟

Android复习

Q:简述Android平台体系结构的层次划分,并说明各个层次的作用。 A:Android是基于Linux内核的软件平台和操作系统,采用了软件堆栈的架构,共分为4层:第一层Linux内核,提供有操作系统内核管理的底层基础功能;第二层中间层,由函数库和Android运行时构成;第三层应用程序框架层,提供了Android平台的管理功能和组件重用机制;第四层应用程序层,提供了一系列核心应用程序。 Q:在AndroidSDK中,Android模拟器,Android调试桥和DBMS 是Android应用程序开发过程中经常使用的工具,简述这三个工具的用途。 A:Android模拟器 支持多种屏幕分辨率和不同的外观,支持加载SD卡映像文件,更改模拟网络状态,延迟 和速度,模拟电话呼叫和接收短信等;不支持接听真实电话,USB连接,摄像头捕获,设 备耳机,电池电量和AC电源检测,SD卡插拔检查和使用蓝牙设备 Android调试桥(Android Debug Bridge,ADB) 用于连接Android设备或模拟器的工具,负责将应用程序安装到模拟器和设备中,或从 模拟器或设备中传输文件 DDMS Android系统中内置的调试工具,监视Android系统中进程、堆栈信息,查看logcat日 志,实现端口转发服务和屏幕截图功能,模拟器电话呼叫和SMS短信,以及浏览Android 模拟器文件系统等. Q:简述Activity声明周期的4种状态,以及状态之间的变换关系。 A:Activity生命周期指Activity从启动到销毁的过程Activity启动后处于活动状态,此时Activity在用户界面中处于最上层,完全能被用 户看到,能够与用户进行交互。如果用户启动了新的Activity,部分遮挡了当前的 Activity,则当前的Activity转换为暂停状态,该Activity不再处于用户界面的最上 层,且不能够与用户进行交互。如果用户启动了新的Activity完全遮挡当前的Activity, 则当前的Activity转换为停止状态,停止状态的Activity 将优先被终止。活动状态的 Activity被用户关闭后,或暂停状态或停止状态的Activity被系统终止后Activity便 进入了非活动状态。 Q:简述Android系统三大菜单的特点以及使用方式 A:菜单是应用程序中非常重要的组成部分,在不占用界面空间的前提下,为应用程序提供了统一的功能和设置界面,为程序开发人员提供了易于使用的编程。 Android系统支持三种菜单 选项菜单(Option Menu):按设备上Menu 键显示的菜单。 子菜单(Submenu):其它两种菜单都可以加入子菜单,但子菜单不能再嵌套子菜单 快捷菜单(Context Menu):长按特定界面view显示,跟具体的 view 绑定在一起,类 似PC上鼠标右键菜单。 Q:简述Intent的定义和用途. A:Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息 Intent也可称为一个在不同组件之间传递的消息,这个消息在到达接收组件后,接收组 件会执行相关的动作,Intent为Activity、Service和BroadcastReceiver等组件提供 交互能力。Intent的用途:启动Activity和Service,在Android系统上发布广播消息. Q:简述Service的基本原理和用途。 A:Service是Android系统提供的Service(服务)组件,不直接与用户进行交互,能够长期在后台运行,在实际应用中,有很多应用需要使用Service,经常提到的例子就是MP3播放器。Service被系统终止,在系统资源恢复后Service 也将自动恢复运行状态,因此可以认为Service是在系统中永久运行的组件。Service除了可以实现后台服务功能,还可以用于进程间通信(Inter Process Communication,IPC),解决不同Android应用程序进程之间的调用和通讯问题。Q:简述R.java和AndroidManifest.xml文件的用途 A:AndroidManifest.xml是XML格式的Android程序声明文件,包含了Android系统运行Android程序前所必须掌握的重要信息,这些信息包括应用程序名称、图标、包名称、 模块组成、授权和SDK最低版本等R.java文件是ADT自动生成的文件包含对drawable、layout和values目录内的资源的引用指针,Android程序能够直接通过R类引用目录中的资源。 Q:简述Android系统的4种基本组件Activity,Service,BroadcastReceiver和ContentProviser的用途。A: Activity是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生界面事件。Android应用程序可以包含一个或多个Activity,一般需要指定一个程序启动时显示的Activity。几乎所有的Activity都是和用户进行交互的,Activity主要关注视图窗体创建,对用户表现为全屏窗体。从视觉效果来看,一个Activity占据当前的窗口,响应所有窗口事件,具备有控件,菜单等界面元素。从内部逻辑来看,Activity需要为了保持各个界面状态,需要做很多持久化的事情,还需要妥善管理生命周期,和一些转跳逻辑。 Service一般用于没有用户界面,但需要长时间在后台运行的应用,可公开Service的程序接口,供其他进程调用。 Service是Android实现程序后台运行的解决方案,用于执行不需要和用户交互且要求长期运行的任务。不能运行在一个独立的进程当中,而依赖创建服务时所在的应用程序进程。只能在后台运行,可以和其他组件进行交互。Broadcast Receiver用来接收广播消息的组件,不包含任何用户界面。可以启动Activity或者Notification通知用户接收到重要信息。广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件。 ContentProvider是Android系统提供的一种标准的共享数据的机制,其他程序通过ContentProvider访问程序的私有数据.Android系统内部提供一些内置的ContentProvider,能够为应用程序提供重要的数据信息,同一份数据,手机内没有更多的空间存储两次以上。针对这种情况,Android提供了Content Provider,它是不同应用程序间共享数据的标准API,统一了数据访问方式。包括添加、删除、修改和查询等操作。 Q:简述6种界面布局的特点 A:线性布局(LinearLayout)是一种重要的界面布局,在线性布局中,所有的子元素都按照垂直或水平的顺序在界面上排列,如果垂直排列,则每行仅包含一个界面元素,如果水平排列,则每列仅包含一个界面元素; 框架布局(FrameLayout)是最简单的界面布局,是用来存放一个元素的空白空间,且子元素的位置是不能够指定的,只能够放置在空白空间的左上角,如果有多个子元素,后放置的子元素将遮挡先放置的子元素; 表格布局(TableLayout)是一种常用的界面布局,通过指定行和列将界面元素添加 到表格中,网格的边界对用户是不可见的。表格布局支持嵌套,可以将表格布局放 置在表格布局的表格中可以在表格布局中添加其他界面布局,例如线性布局、相对 布局等; 相对布局(RelativeLayout)是一种非常灵活的布局方式,能够通过指定界面元素 与其他元素的相对位置关系,确定界面中所有元素的布局位置,能够最大程度保证 在各种屏幕尺寸的手机上正确显示界面布局 绝对布局(AbsoluteLayout)能通过指定界面元素的坐标位置,来确定用户界面的 整体布局绝对布局是一种不推荐使用的界面布局,因为通过X轴和Y轴确定界面元 素位置后,Android系统不能够根据不同屏幕对界面元素的位置进行调整,降低了 界面布局对不同类型和尺寸屏幕的适应能力 网格布局(GridLayout)将用户界面划分为网格,界面元素可随意摆放在网格中, 网格布局比表格布局(TableLayout)在界面设计上更加灵活,在网格布局中界面元 素可以占用多个网格,而在表格布局只能将界面元素指定在一个表格行(TableRow) 中,不能跨越多个表格行。

Android移动应用试题(带答案)

<>试题 一.选择题(2’X12) 1.下面哪一个不属于Android体系结构中的应用程序层 A.电话簿 B.日历 C.SQLite D.SMS程序 2.下面哪种说法不正确 A.Android应用的gen目录下的R.java被删除后还能自动生成; B.res目录是一个特殊目录,包含了应用程序的全部资源,命名规则可以支持数字(0-9) 下横线(_),大小写字母(a-z , A-Z); C.AndroidManifest.xml文件是每个Android项目必须有的,是项目应用的全局描述。其 中指定程序的包名(pack age=”…”)+指定android应用的某个组件的名字(android:name=”…”)组成了该组件类的完整路径 D.assets和res目录都能存放资源文件,但是与res不同的是assets支持任意深度的子目 录,在它里面的文件不会在R.java里生成任何资源ID 3.在一个相对布局中怎样使一个控件居中 A.android:gravity="center" B.android:layout_gravity="center" C.android:layout_centerInParent="true" D.android:scaleType="center" 4.下面是一段生成对话框的代码,哪一行有错误? Builder builder = new Builder(getApplicationContext()); 1 builder.setTitle("提示").setMessage("请选择"); 2 builder.setPositiveButton("重置", new OnClickListener() 3 { 4 public void onClick(DialogInterface dialog, int which) 5 { 6 Log.i("log", "重置被按了!"); 7 } 8 }); 9 builder.setNegativeButton("取消", null); 10 builder.setNeutralButton("确定", new OnClickListener() 11 { 12 public void onClick(DialogInterface dialog, int which) 13 { 14 Toast.makeText(getApplicationContext(), "确定被按了!", 15 Toast.LENGTH_SHORT).show(); 16 } 17

Android体系结构

android 平台大的方面的层次可以划分成三个层次,包括一个操作系统,中间件和应用程序,android 的系统框架图如下: 图中的软件层次自上而下分成4个层次 1.应用程序(Application) 2.用用程序框架(Application Framework) 3.各种类库(Libraries)和android运行时(Adnorid Runtime) 4.操作系统(OS) 一.应用程序(Application) 应用层是和用户交互的一个层次,用户可以看得见的一些应用,用户可以操作。这类应用基本都是通过Java语言编写的独立的能够完成某些功能的应用程序。 Android本身提供了桌面(Home),联系人(Contacts),拨打电话(Phone),浏览器(Browers)等很多基本的应用程序。开发人员可以使用应用框架提供的API编写自己的应用程序,普通开发人员要做的事情就是开应用层的程序提供该广大消费者使用。 二.应用程序框架(Application Framework) 普通开发者可以使用Android基本应用程序使用的系统API,android 应用框架中的各个模块都可以被复用,各种服务也可以被复用,理解了这个机制,开发人员可以更好的更轻松的开发出优秀的android应用。开发过程中常用到的基本框架组件如下: 1.一组View(UI 组件),这些UI组件包括Button(按钮),EidtView(文本框),TextView(标 签),List(列表)等等,灵活运用这些组件可以快速方便的创建良好的用户交互界面。 2.Content Providers(内容提供者),听起来有点抽象,通俗的理解Content Provider 就是提供 一种服务,通过这种服务应用程序之间可以实现数据的互相访问和共享,比如通讯录的存储就使用了这种服务,其它应用也可以访问通讯录中存储的联系人信息。 3.Resource Manager 顾名思义就是资源管理,android中的资源很多包括图片,用户界面(Layout xml),字体,颜色,UI组件的Id等等都可以称之为资源,这些丰富的资源,都是通过Resource Manager 来统一进行管理。 4.Notification Manager(消息通知管理),它在不影响用户正常操作和使用设备的时候在状态栏上 提供消息的提示。比如有短信来的时候,android自动会将这个消息提示在状态栏上,用户可以及时的看到。

安卓系统架构分析

1、Android系统架构图: 分析: 第一层:Linux操作系统和驱动(Linux kernel):由C语言实现。 Android核心系统服务依赖于Linux2.6内核,包括:安全性、内存管理、进程管理、网络协议、驱动模型。Linux内核也作为硬件和软件栈之间的抽象层。 除了标准的Linux内核外,Android还增加了内核的驱动程序:Binder(IPC)驱动、显示驱动、输入设备驱动、音频系统驱动、摄像头驱动、WiFi驱动、蓝牙驱动、电源管理。 第二层:本地框架和Java运行环境(LIBRARIES和ANDROID RUNTIME)本地框架是有C/C++实现。包含C/C++库,被Android系统中不同组件使用,它们通过Android应用程序框架为开发者进行服务。 系统C库:(libc)从BSD继承过来的标准的C系统函数库,专门是为基于嵌入式Linux的设备定制的库。

多媒体库:基于PackerVideo的OpenCore;该库支持多种常用的音频、视频格式回放和录制,支持多种媒体格式的编和解码格式。 Suface Manager:显示子系统管理器,并且为多个应用程序提供2D和3D图层的无缝融合。 LibWebCore:一个最新的Web浏览器引擎,支持Android浏览器,以及一个可嵌入式的Web视图。 SGL:Skia图形库,底层的2D图形引擎。 3D libraries:基于OpenGL ES1.0API的实现;该库可以使用硬件3D加速(如果可用),或者使用高度优化的3D软加速。 FreeType:位图(bitmap)和矢量(vector)字体显示。 Android运行环境(ANDROID RUNTIME):提供了Java编程语言核心库的大多数功能,由Dalvik Java虚拟机和基础的Java类库组成。 Dalvik是Android中使用的Java虚拟机,每个Android应用程序都在自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。 Dalvik被设计成一个可以同时高效运行多个虚拟机实例的虚拟系统。执行后缀名为.dex的Dalvik可执行文件,该格式的文件 Java a 针对小内存使用做出了优化。同时虚拟机是基于寄存器的,所有的类都是有Jav dx””工具 编译器编译,然后通过SDK中的“dx 转化为.dex格式由虚拟机执行。 Dalvik虚拟机依赖于Linux内核的一些功能,比如线程机制和底层内存管理机制。第三层:Android应用框架(ANDROID FRAMEWORK) 在Android系统中,开发人员也可以完全访问核心应用程序所使用的API框架。包含的框架入上图(不在陈述) 第四层:Android应用程序(APPLICATIONS) 注意:Android应用程序都是有Java语言编写的。用户开发的Android应用程序和Android的核心应用程序是同一层次的,它们都是基于Android的系统API 构建的。

android基本架构

android基本架构 Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上。 Android主要应用于ARM平台,但不仅限于ARM,通过编译控制,在X86、MAC 等体系结构的机器上同样可以运行。 android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。 蓝色的代表java程序,黄色的代码为运行JAVA程序而实现的虚拟机,绿色部分为C/C++语言编写的程序库,红色的代码内核(linux内核+driver)。在Application Framework之下,由C/C++的程序库组成,通过JNI完成从JAVA 到C的调用。 1) 应用程序 所有的应用程序都是使用JAVA语言编写的,每一个应用程序由一个或者多个活动组成,活动必须以Activity类为超类,活动类似于操作系统上的进程,但是活动比操作系统的进程要更为灵活,与进程类似的是,活动在多种状态之间进行切换。 利用JAVA的跨平台性质,基于Android框架开发的应用程序可以不用编译运行于任何一台安装有android系统的平台,这点正是Android的精髓所在。

2) 应用程序框架 应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。帮助程序员快速的开发程序,并且该应用程序重用机制也使用户可以方便的替换程序组件。 隐藏在每个应用后面的是一系列的服务和系统, 其中包括; a.丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons),甚至可嵌入的web浏览器。 b.内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。 c.资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件(layout files)。 d.通知管理器(Notification Manager)使得应用程序可以在状态栏中显示自定义的提示信息。 e.活动管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。 3) 系统运行库 a)程序库 Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。 以下是一些核心库: 主要包括基本的C库、以及多媒体库以支持各种多媒体格式、位图和矢量字体、2D和3D图形引擎、浏览器、数据库支持。 1.Bionic系统C库。 2.媒体库,基于PacketVideo OpenCORE。 3.Surface Manager 顾名思义,用于管理Surface。 4.Webkit,LibWebCore 浏览器,基于Webkit引擎。 5.SGL 底层的2D图形引擎 6.3D libraries 基于OpenGL ES 1.0 APIs实现 7.FreeType 位图(bitmap)和矢量(vector)字体显示。 8.SQLite 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。 另外这里还有一个硬件抽象层。其实Android并非所有的设备驱动都放在linux内核里面,有一部分实现在用户空间, 这么做的主要原因是可以避开Linux所遵循的GPL协议,一般情况下如果要将Android移植到其他硬件去运行, 只需要实现这部分代码即可。包括:显示器驱动,声音,相机,GPS,GSM 等等。 b)Android 运行库 Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。

Android课后习题答案整理

第一章 Android简介 1.简述各种手机操作系统的特点. 答案: 目前,手机上的操作系统主要包括以下几种,分别是Android、iOS、Windows Mobile、Windows Phone 7、Symbian、黑莓、PalmOS和Linux。 (1)Android是谷歌发布的基于Linux的开源手机平台,该平台由操作系统、中间件、用户界面和应用软件组成,是第一个可以完全定制、免费、开放的手机平台。Android底层使用开源的Linux 操作系统,同时开放了应用程序开发工具,使所有程序开发人员都在统一、开放的开发平台上进行开发,保证了Android应用程序的可移植性。 (2)iOS是由苹果公司为iPhone、iPod touch、iPad以及Apple TV开发的操作系统,以开放源代码的操作系统Darwin为基础,提供了SDK,iOS操作系统具有多点触摸操作的特点,支持的控制方法包括滑动、轻按、挤压和旋转, 允许系统界面根据屏幕的方向而改变方向,自带大量的应用程序。 (3)Windows Mobile是微软推出的移动设备操作系统,对硬件配置要求较高,一般需要使用高主频的嵌入式处理器,从而产生了耗电量大、电池续航时间短和硬件成本高等缺点,Windows Mobile 系列操作系统包括Smartphone、Pocket PC和Portable Media Center。随着Windows Phone 7的出现,Windows Mobile正逐渐走出历史舞台。 (4)Windows Phone 7具有独特的“方格子”用户界面,非常简洁,黑色背景下的亮蓝色方形图标,显得十分清晰醒目,集成了Xbox Live游戏和Zune音乐功能,可见Windows Phone 7对游戏功能和社交功能的重视。 (5)Symbian是为手机而设计的实时多任务32位操作系统,它的功效低,内存占用少,提供了开发使用的函数库、用户界面、通用工具和参考示例。操作系统不是完全开放的,核心代码不开放,但是API文档是公开的。 (6)黑莓系统主要在黑莓手机上使用,其特色是支持电子邮件推送功能,邮件服务器主动将收到的邮件推送到用户的手持设备上,而不需要用户频繁地连接网络查看是否有新邮件。同时,黑莓系统提供手提电话、文字短信、互联网传真、网页浏览及其它无线信息服务功能。黑莓系统主要针对商务应用,具有很高的安全性和可靠性。 (7)PalmOS由拥有较多的第三方软件,是32位的嵌入式操作系统,主要在移动终端上使用,操作系统本身所占的内存极小,不具备录音和MP3播放功能。 (8)Linux手机操作系统具有开放源代码的特性,但是也包含入门难度高,集成开发环境差,Linux的产品与个人计算机的连接性较差,具有较强的开发实力的公司很少等不足。 2.简述Android平台的特征 答案: Android广泛支持GSM、3G和4G的语音与数据业务,支持接收语言呼叫和SMS短信,支持数据存储共享和IPC消息机制,为地理位置服务(如GPS)、谷歌地图服务提供易于使用的API函数库,提供组件复用和内置程序替换的应用程序框架,提供基于WebKit的浏览器,广泛支持各种流行的视频、音频和图像文件格式。 Android系统提供了访问硬件的API库函数,用来简化像摄像头、GPS等硬件的访问过程。在内存和进程管理方面,Android为了保证高优先级进程运行和正在与用户交互进程的响应速度,允许停止或终止正在运行的低优先级进程,以释放被占用的系统资源。Android进程的优先级并不是固定的,

Android移动应用试题(带答案).doc

<>试题 一. 选择题( 2’X12) 1.下面哪一个不属于 Android 体系结构中的应用程序层 A.电话簿 B.日历 C.SQLite D.SMS 程序 2.下面哪种说法不正确 A. Android 应用的 gen 目录下的被删除后还能自动生成; B. res 目录是一个特殊目录,包含了应用程序的全部资源,命名规则可以支持数字 (0-9) 下横线 (_),大小写字母 (a-z , A-Z); C. 文件是每个 Android 项目必须有的,是项目应用的全局描述。其中指定程序的包名 (package= ” ”指定)+ android 应用的某个组件的名字(android:name= ” ”)组成了该组件类的完整路径 D. assets 和 res 目录都能存放资源文件,但是与res 不同的是 assets 支持任意深度的子 目录,在它里面的文件不会在里生成任何资源ID 3.在一个相对布局中怎样使一个控件居中 A.android:gravity="center" B. android:layout_gravity="center" C.android:layout_centerInParent="true" D. android:scaleType="center" 4. 下面是一段生成对话框的代码,哪一行有错误 Builder builder = new Builder(getApplicationContext()); 1 (" 提示 ").setMessage(" 请选择 "); 2 (" 重置 ", new OnClickListener() 3 { 4 public void onClick(DialogInterface dialog, int which) 5 { 6 ("log", " 重置被按了 !"); 7 } 8 }); 9 (" 取消 ", null); 10 (" 确定 ", new OnClickListener() 11 { 12 public void onClick(DialogInterface dialog, int which) 13 { 14 (getApplicationContext(), " 确定被按了 !", 15 .show(); 16 } 17

Android架构基本知识

Android架构基本知识 1.2 Android的系统架构 系统构架图中可以看到从上到依次是应用层(Applications)、应用框架层(Application Framework)、系统运行库层(Lib和Runtime)、 Linux内核层(linux kernel) 1.2.1 Android内核 Linux 内核版本2.6 位于硬件和软件堆之间的抽象层 核心服务:安全机制、内存管理、进程管理、网络、硬件驱动。

Android依赖Linux内核2.6来提供核心服务,比如进程管理、网络协议栈、硬件驱动。在这里,Linux内核作为硬件层和系统软件栈层之间的一个抽象层。这个操作系统并非类GNU/Linux的,因为其系统库,系统初始化和编程接口都和标准的Linux系统是有所不同的。 从Google目前release的Linux系统来看,其没有虚拟内存文件系统,系统所用的是yaffs2文件系统,具体的映像也都位于SDK安装目录下。通过emulator -console命令,我们可以在host 终端下得到一个简单的可以控制Android的shell,这个系统包含了一个Toolbox,提供一些基本的命令工具,集中在/sbin,/system/sbin,/system/bin中,但是很简陋,命令种类也很少。若有时间和必要我会作个介绍。 既然采用的linux系统,就有必要介绍一下主要驱动(如图中所示): 显示驱动(Display Driver) 键盘驱动(KeyBoard Driver) Flash内存驱动(Flash Memory Driver) 照相机驱动(Camera Driver) 音频驱动(Audio Driver) 蓝牙驱动(Bluetooth Driver) Wifi驱动 Binder IPC驱动 Power Management (电源管理)等等。 1.2.2程序库和运行库(Lib和Runtime)

相关主题
相关文档
最新文档