本文转载于:http://www.iteye.com/topic/1112453
1、android的生态系统
Android是由Google在2007年推出的一个开源系统平台,主要针对移动设备市场,现在的最新版本是Android 3.2,android底层基于精简优化过的Linux kernel 2.6。android系统架构如图:
从图上可以看出来,整个系统分为4层
(1)、Linux Kernel
该层是使用google自己精简优化过的linux系统,使其更适合内存和电量有限的移动设备
主要是负责系统底层的内存管理,安全管理,进程调度以及硬件进行通讯等等,并对其上层提供服务。
(2)、android Runtime
包含两部分:
1、core Libraries(核心库),该核心库提供大部分在Java编程语言核心类库中可用的功能。
2、Dalvik 虚拟机。Dalvik是Google公司自己设计用于Android平台的Java虚拟机,Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。
Dalvik和JVM的几点区别
1、Dalvik 基于寄存器,而 JVM 基于栈。基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。
2、Dalvik主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常管理,以及垃圾回收等等重要功能。
3、Dalvik负责进程隔离和线程管理,每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。
4、不同于Java虚拟机运行java字节码,Dalvik虚拟机运行的是其专有的文件格式Dex,ex文件格式可以减少整体文件尺寸,提高I/o操作的类查找速度。
5、所有的Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制
(3)、Libraries
Android包含一个C/C++库的集合,供Android系统的各个组件使用。例如:
libc:这是系统的C库,Media Framework: 媒体库,SurfaceManager 显示系统管理库,负责把2D或3D内容显示到屏幕,WebKit,浏览器内核等不同的库。供上层调用
(4)、Application Framework
应用程序框架,也是我们开发的时候打交道最多的,给我们提供里丰富多彩的应用程序API,通过这些我们可以做出丰富多彩的应用。
Activity Manager(活动管理器),主要负责程序生命周期的管理。
Content Providers (内容提供者),使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据
Resource Manager (资源管理器),提供访问非代码资源,如本地化字符串、图形和布局文件
View (试图),丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器
(5)Applications
四层中的最上层,在系统中安装的应用程序,就位于该层,我们以后写的程序也基本在该层运行,全部由Java语言编写,当然Android也允许用户使用C和C++编写程序的。
2、android应用程序的目录结构
1、src : 没什么好说的,就是我们的源代码了
2、gen : 不知道gen是不是generate的缩写,gen目录存放系统自动维护的一些文件,主要是 R.java。R文件由ADT自动维护,主要是为res目录下面的xml,图像,媒体等文件同步生成一个类似字典的东西,系统中对这些资源的引用可以通过R文件来操作。在编译的时候会对R文件进行检查,如果R文件中没有引用的资源不会被编译打包,以节省系统资源,另外,R文件只有一个,我们不需要也不要去改里面的内容。
3、assets:assets也是一个资源文件夹,assets中的资源可以被打包到程序里面,和Res不同的地方是,ADT会为res下面的文件在R文件中生成一个ID,而不会为assets中的资源生成ID,因此要使用该目录下面的文件,需要通过完整路径的方式进行调用。(该目录下面的文件不会被编译,直接复制到程序安装包中)
4、res:资源目录(我们不能在Res目录下面建立自定义目录,以及为已有的目录建立子目录)
drawable:主要存放不同分辨率的图片文件
(1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA480x854)
(2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)
(3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)
layout:存放用于布局的xml文件
values:用于存放一些常量(不同类型的变量存放在不同的文件中,该目录中xml的文件名 是不能改的)
strings.xml 定义字符串和数值
arrays.xml 定义数组
colors.xml 定义颜色和颜色字串数值
dimens.xml 定义尺寸数据
styles.xml 定义样式
anim:存放一些和动画有关的xml文件
xml:存放一些自定义的xml文件
raw:该目录下面的文件不会被编译,直接复制到程序安装包中。
5、AndroidManifest.xml
- <?xmlversion="1.0"encoding="utf-8"?>
-
lt;manifestxmlns:android="http://schemas.android.com/apk/res/android"
-
package="com.cheney.weiboo"
-
android:versionCode="1"
-
android:versionName="1.0">
-
<uses-sdkandroid:minSdkVersion="4"/>
-
<applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
-
<activityandroid:name=".IndexActivity"
-
android:label="@string/app_name">
-
<intent-filter>
-
<actionandroid:name="android.intent.action.MAIN"/>
-
<categoryandroid:name="android.intent.category.LAUNCHER"/>
-
</intent-filter>
-
</activity>
-
</application></manifest>
xmlns:android:包含命名空间的声明。xmlns:android="http://schemas.android.com/apk/res/android",使得Android中各种标准属性能够在文件中使用,提供大部分元素的数据。
package:声明应用程序包。
application:包含package中application级别组件声明的根节点。此元素耶可包含application的一些全局和默认的属性,如标签、icon、主题、必要权限等。一个manifest能够包含零个或一个此元素,不能大于一个。
android:icon:应用程序图标。
android:lebel:应用程序名字。
Activity:用户交互工具。
android:name:应用程序默认启动的Activity。
intent-filter:声明了指定一组组件支持的Intent值,从而形成IntentFilter。
action:组件支持的Intent action 。
category:组件支持的Intent Category。指定应用程序默认启动的Activity。
uses-sdk: 应用程序所使用的sdk版本。
分享到:
相关推荐
Android学习笔记-Activity篇 Contents Android学习笔记-Activity篇 1 一、activity创建: 1 二、在manifest.xml中声明activity: 1 三、启动activity 1 3.1 启动不带返回结果的Activity 1 3.2 启动带有返回结果的...
Android学习笔记 Android学习笔记 Android学习笔记
Android学习笔记
android 学习笔记(全全整理),吧android学习笔记全部整理下来了,可以去好好学习学习
Android学习笔记(一)——创建第一个Android项目 Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) ...
第一行代码 android学习笔记 修改完整版
Android基础学习笔记,自己总结,适合初学者。
Android基础笔记 Android基础笔记 Android基础笔记 Android基础笔记
android 学习笔记 android 学习笔记 android 学习笔记
Android 开发学习笔记,学习android的好资料
自己整理的Android学习笔记 都是一些小细节,有用
学习java和android的笔记 更容易学习android 资深学习android 具有大量学习的笔记 很多的错误 都是从细节开始学习的
Android学习笔记,介绍怎么学习android。
Android学习笔记(十三) 碎片 完整源码
android学习笔记
Android学习笔记(1)-永远不变的Hello World Google的Android SDK发布也有一段时间了,一直想研究一下却苦于找不到时间。利用这个周未,开始强迫自己再次进入学习状态,原因很简单:我看好开放的gPhone。 SDK的下载...
Android开发学习笔记(整理),整理论坛android学习笔记,较完整的讲解了android的内容。包括:view、activity、service、intent、广播机制、http连接、数据sqllite存储、后台线程、各种layout、偏好、本地文件操作、...
Android学习笔记——获取网络图片并显示