`

Android系统构架分析和应用程序目录结构分析

 
阅读更多

官方文档说明(原文不含此内容): http://developer.android.com/guide/basics/what-is-android.html


一、Android系统构架

Android系统从底向上一共分了4层,每一层都把底层实现封装,并暴露调用接口给上一层。

system-architecture

下面是简单翻译的版本:

system-architecture_nebulayao

  1. Linux内核(Linux Kernel)
    • Android运行在linux kernel 2.6之上,但是把linux内受GNU协议约束的部分做了取代,这样在Android的程序可以用于商业目的。
    • Linux 内核是硬件和软件层之间的抽象层。
  2. 中间件
    • 中间件包括两部分:核心库和运行时(libraries & Android runtime)
    • 核心库包括,SurfaceManager 显示系统管理库,负责把2D或3D内容显示到屏幕;Media Framework 媒体库,负责支持图像,支持多种视频和音频的录制和回放;SQlite 数据库,一个功能强大的轻量级嵌入式关系数据库;WebKit 浏览器引擎等。
    • Dalvik虚拟机:区别于Java虚拟机的是,每一个Android 应用程序都在它自己的进程中运行,都有一个属于自己的Dalvik 虚拟机,这一点可以让系统在运行时可以达到优化,程序间的影响大大降低。Dalvik虚拟机并非运行Java字节码,而是运行自己的字节码。
  3. 应用程序框架(Application Framework)
    • 丰富而又可扩展性的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids), 文本框(text boxes),按钮( buttons), 可嵌入的web 浏览器。
    • 内容提供者(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。
    • 资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件( layoutfiles )。
    • 通知管理器(Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。
    • 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。
  4. 应用程序 (Applications)
    • Android 系统会内置一些应用程序包包括email 客户端,SMS 短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA 语言编写的。

二、Android应用程序结构分析

接下来让我带领大家解析一个Android程序的各个组成部分,这次我们拿一个Hello,World做例子,虽然只是一个Hello,World,但也是麻雀虽小五脏俱全,通过分析Hello,World的目录结构,让我们对Android程序有一个整体全面的认识。

image

(Lesson2_HelloWorld 显示效果)

image

(Lesson2_HelloWorld 目录结构)

Lesson2_HelloWorld程序的创建过程可以参见教学视频:第二讲视频:创建 Lesson2_HelloWorld

接下来我们逐个部分加以讲解:

1、Activity类 MainHelloWorld文件浅析

Activity是Android中的视图部分,负责界面显示。

package android.basic.lesson2.helloworld;

import android.app.Activity;
import android.os.Bundle;

public class MainHelloWorld extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}

可以看到MainHelloWorld是Activity的子类,子类要重写onCreate方法。setContentView(R.layout.main)方法是给Activity设置可以显示的视图(View),视图由R类负责寻找。

2、R文件浅析

我们看到Gen目录下有个R.Java文件,R文件由ADT自动生成,程序员不需要也不要去修改它,R文件负责调用应用程序中的非代码资源。

/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/

package android.basic.lesson2.helloworld;

public final class R {
public static final class attr {
}
public static final class color {
public static final int red=0x7f050000;
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class id {
public static final int TextView01=0x7f060000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
public static final int tagline=0x7f040002;
}
}
从R文件中可以看到每一个资源都会有一个整数和它相对应。

3、res/layout/main.xml文件浅析 – 布局layout

我们看到有个res目录,也就是resource目录,这个目录下存放资源文件,资源文件的统一管理,也是Android系统的一大特色。现在要注意看的是layout目录下的main.xml。这个文件的内容是有关用户界面布局和设计的。在桌面程序设计领域采用XML也许比较新颖,但是在网页设计领域,这个就很平常了。同学们可以用html来类比xml在布局中的用途。

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:gravity=”center”
>
<TextView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:textColor=”#0f0″
android:textSize=”30px”
android:text=”@string/hello”
/>
<TextView
android:text=”@string/tagline”
android:id=”@+id/TextView01″
android:layout_width=”wrap_content”
android:textSize=”14px”
android:textColor=”@color/red”
android:layout_height=”wrap_content”>
</TextView>
</LinearLayout>

从以上代码可以看到整个程序界面由一个线性布局控件(LinearLayout)和2个文本框控件(TextView)组成。res的其他目录里的其他文件也都是相关的资源描述。

4、AndroidManifest.xml文件浅析

在每个应用程序的根目录都会有一个AndroidManifest.xml文件,该文件向Android操作系统描述了,本程序所包括的组件,所实现的功能,能处理的数据,要请求的资源等等。学过Java Web开发的同学可以用Web应用程序里的web.xml来类比这个AndroidManifest.xml文件。

<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”android.basic.lesson2.helloworld”
android:versionCode=”1″
android:versionName=”1.0″>
<application android:icon=”@drawable/icon” android:label=”@string/app_name”>
<activity android:name=”.MainHelloWorld”
android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>

</application>
<uses-sdk android:minSdkVersion=”8″ />
</manifest>

我们看到Manifest是根节点,节点属性里有versionCode和versionName来表示应用程序的版本;里面可以包含0个或1个application元素,application可以包含多个activity组件等等,具体的内容我们在接下来的课程里详细讲解。

5、Android.jar文件浅析

作为一个Java项目,通常情况下都会引入要用到的工具类,也就是Jar包,在Android开发中,绝大部分开发用的工具包都被封装到一个名叫Android.jar的文件里了。如果我们在Eclipse中展开来看,可以看到j2se中的包,apache项目中的包,还有Android自身的包文件。在这里我们简单浏览一下Android的包文件:

android.app :提供高层的程序模型、提供基本的运行环境
android.content :包含各种的对设备上的数据进行访问和发布的类
android.database :通过内容提供者浏览和操作数据库
android.graphics :底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制到屏幕上.
android.location :定位和相关服务的类
android.media :提供一些类管理多种音频、视频的媒体接口
android.net :提供帮助网络访问的类,超过通常的java.net.* 接口
android.os :提供了系统服务、消息传输、IPC 机制
android.opengl :提供OpenGL 的工具
android.provider :提供类访问Android 的内容提供者
android.telephony :提供与拨打电话相关的API 交互
android.view :提供基础的用户界面接口框架
android.util :涉及工具性的方法,例如时间日期的操作
android.webkit :默认浏览器操作接口
android.widget :包含各种UI 元素(大部分是可见的)在应用程序的屏幕中使用


原文: http://android.yaohuiji.com/archives/53

分享到:
评论

相关推荐

    Android系统构架分析和应用程序目录结构分析1

    Android系统构架分析和应用程序目录结构分析,对整个framework层,已经代码目录的功能的基本描述,自己学习的总结!

    android入门课程大全(含源码)

    第一讲:Android开发环境的搭建 第二讲:Android系统构架分析和应用程序目录结构分析 第三讲:Android模拟器的使用 第四讲:Activity入门指南 ······

    android一步一步最基础学习__新手

    第二讲:Android系统构架分析和应用程序目录结构分析 第三讲:Android模拟器的使用 emulator 第四讲:Activity入门指南 Activity 第五讲:用户界面 View(一) FrameLayout, LinearLayout 第六讲:用户界面 ...

    Android操作系统移植及应用研究

    在详细研究Android应用程序开发的核心组件和应用程序生命周期的基础上,实现了音乐播放器和对对碰游戏两个Android应用程序,并在Android模拟器、Android手机上和移植了Android系统的Devkit8000开发板上进行验证。...

    android核心分析pdf

    Android核心分析(20)----Android应用程序框架之无边界设计意图. Android核心分析(21)----Android应用框架之AndroidApplication. Android核心分析(22)----Android应用框架之Activity Android核心分析(23)----...

    android手机短信管理系统论文 完整版

    第3章 android应用程序结构剖析 9 3.1 Android的API 9 3.2 Android应用程序结构解析 10 3.2.1 活动 10 3.2.2 意图接收器 11 3.2.3 服务 11 3.2.4 内容提供者 11 3.3 Intent的详细解析 12 3.3.1 Intent的抽象描述 12 ...

    Android应用程序开发教程PDF电子书完整版、Android开发学习教程

    Android是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • ...

    基于Android平台的星座查询软件设计

    3、Android应用程序结构剖析 8 3.1 Android的API 8 3.2 Android应用程序结构解析 9 3.2.1活动 9 3.2.2意图接收器 10 3.2.3服务 11 3.2.4内容提供者 11 3.3 Intent的详细解析 11 3.3.1 Intent的抽象描述 11 3.3.2 ...

    Android技术内幕.系统卷

    全书将Android系统从构架上依次分为应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层等5个层次,旨在通过对Android系统源代码的全面分析来帮助开发者加深对Android系统架构设计和实现原理的认识,从而...

    android手机短信管理系统毕业论文

    第3章 android应用程序结构剖析 9 3.1 Android的API 9 3.2 Android应用程序结构解析 10 3.2.1 活动 10 3.2.2 意图接收器 11 3.2.3 服务 11 3.2.4 内容提供者 11 3.3 Intent的详细解析 12 3.3.1 Intent的抽象描述 12 ...

    Android核心分析(pdf)

    Android核心分析(20)----Android应用程序框架之无边界设计意图. Android核心分析(21)----Android应用框架之AndroidApplication. Android核心分析(22)----Android应用框架之Activity Android核心分析(23)----...

    基于Android系统的智能社区平台系统APP设计与实现.docx

    2.1 Android系统架构 10 2.2 Android应用开发技术 11 2.3 Android应用程序设计模式 12 2.4 Android应用程序性能优化 13 第三章 智能社区平台系统设计 15 3.1 系统需求分析 15 3.2 系统总体设计 16 3.3 系统模块设计 ...

    Android技术内幕:系统卷.pdf 详细书签

    全书将Android系统从构架上依次分为应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层等5个层次,旨在通过对Android系统源代码的全面分析来帮助开发者加深对Android系统架构设计和实现原理的认识,从而...

    android源代码结构分析

    一篇关于android源代码结构的文档,对的熟悉android结构很有帮助

    Android底层开发技术实战详解--内核、移植和驱动.(电子工业.王振丽).part1

    全书分为19章,依次讲解驱动移植的必要性,何为hal层深入分析,goldfish、msm、map内核和驱动解析,显示系统、输入系统、振动器系统、音频系统、视频输出系统的驱动,openmax多媒体、多媒体插件框架,传感器、照相机...

    android星座查询软件毕业论文

    3、Android应用程序结构剖析 8 3.1 Android的API 8 3.2 Android应用程序结构解析 9 3.2.1活动 9 3.2.2意图接收器 10 3.2.3服务 11 3.2.4内容提供者 11 3.3 Intent的详细解析 11 3.3.1 Intent的抽象描述 11 3.3.2 ...

    [经典文档]Android核心分析

    核心分析之二十 ----- Android 应用程序框架之无边界设计意图 核心分析之二十一 ----- Android 应用框架之Android Application 核心分析之二十二 ----- Android 应用框架之Activity 核心分析之二十三 ----- Android...

    基于安卓Android的网上订餐系统毕业设计

    在系统规划中先后用数据流程图、系统功能结构图分析了系统所需的各种数据,详细的展现了系统的各个功能模块并给出了主要功能运行界面图。该点餐系统目前已有比较完善的管理与使用功能。开发点餐系统是为了满足酒店...

Global site tag (gtag.js) - Google Analytics