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

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

2023年7月7日发(作者:)

第二讲:Android系统构架分析和应用程序目录结构分析

本讲内容:

Android系统构架简介

Android应用程序结构分析

一、Android系统构架

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

下面是简单翻译的版本:

1

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) 用来管理应用程序生命周期并提供常用的导航回退功能。

2

4. 应用程序 (Applications)

Android系统会内置一些应用程序包,包括email客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是使用JAVA 语言编写的。

二、Android应用程序结构分析

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

(HelloWorld 显示效果)

3 (HelloWorld 目录结构)

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

1、Activity类 MainHelloWorld文件浅析

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

package orld;

import ty;

import ;

public class MainHelloWorld extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

te(savedInstanceState);

setContentView();

}

}

可以看到MainHelloWorld是Activity的子类,子类要重写onCreate方法。

4 setContentView()方法是给Activity设置可以显示的视图(View),视图由R类负责寻找。

2、R文件浅析

我们看到Gen目录下有个文件,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 orld;

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/文件浅析 – 布局layout

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

android:orientation=”vertical”

android:layout_width=”fill_parent”

android:layout_height=”fill_parent”

android:gravity=”center”

>

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:textColor=”#0f0″

android:textSize=”30px”

android:text=”@string/hello”

/>

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”>

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

4、文件浅析

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

package=”orld”

android:versionCode=”1″

6

android:versionName=”1.0″>

android:label=”@string/app_name”>

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

5、文件浅析

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

:提供高层的程序模型、提供基本的运行环境

t :包含各种的对设备上的数据进行访问和发布的类

se :通过内容提供者浏览和操作数据库

cs :底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制到屏幕上.

on :定位和相关服务的类

:提供一些类管理多种音频、视频的媒体接口

:提供帮助网络访问的类,超过通常的.* 接口

:提供了系统服务、消息传输、IPC 机制

:提供OpenGL 的工具

er :提供类访问Android 的内容提供者

ony :提供与拨打电话相关的API 交互

:提供基础的用户界面接口框架

:涉及工具性的方法,例如时间日期的操作

:默认浏览器操作接口

:包含各种UI元素(大部分是可见的)在应用程序的屏幕中使用

本节课程就到这里。

7

发布者:admin,转转请注明出处:http://www.yc00.com/web/1688677426a161770.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信