Android操作系统中开发的应用程序都有一个结构缜密的架构。我们今天就来对这一Android程序架构做一个详细的分析。帮助大家了解程序开发的特点,以方便将来在应用程序开中明确自己的程序架构。

Android程序架构1. src/ 原始码(source)目录

src 目录中包含了一个 Android 应用程式中所需的各个程式码档桉。这些档桉被包在对应 package 的子目录下。(如本章的 BMI 例子中,子目录指的就是 /src/com/demo/android/bmi/)

src 目录中比较关键的程式有:

1. Bmi.java 这个档桉的档名会随着你在建立一个新的程式专桉画面中所填入「Create Activity」栏位值的不同而改变。这是新程式专桉中的主要程式区块。我们开发 Android 程式的多数时间,都是在 src 目录下和 Android 打交道。
gen/ 自动生成(Generate)目录

gen 目录中存放所有自动生成的档桉。

gen 目录中最关键的程式就是 R.java 档。

1. R.java 这个档是自动产生的。会由 ADT 插件自动根据你放入 res 目录的 XML 描述文件、图像等资源,同步更新修改 'R.java' 这个文件中。所有的 Android 程式中都会有以 R.java 为名的这个档桉,你完全不需要,也应避免手工修改 R.java 这个档桉。

R.java 中自动产生的「R」 类别就像是个字典一样,包含了使用者介面、图像、字串等各式的资源与相应的编号(id)。Android 应用程式中很多时候会需要透过 R 类别调用资源。编译时编译器也会查看这个资源列表,没有使用到的资源就不会编译进去,为手机应用程式节省不必要没用的空间。

Android程序架构2. s/ 资源(Resource)目录

「res」 目录中存放所有程式中用到的资源档桉。"资源档桉"指的是资料档桉,或编译时会被转换成程式一部分的 XML 描述档。Android 针对放在「res」 目录下的不同子目录的资源,会有各自不同处理方式。因此我们写程式时,最好能搞清楚各目录下分别可放置的内容。

Android程序架构3. layout/ 版面配置(layout)目录

「layout」目录包含所有使用 XML 格式的介面描述档。「layout」 中的 XML 介面描述档就像写网页时用到的 HTML 档桉一样,用来描述萤幕上的版面编排与使用的介面元件。XML 介面描述档描述的内容可以是整张萤幕,也可以只描述一部分的介面(例如描述用来产生对话框的介面元件)。

虽然你也能直接通过 Java 来建立使用者介面,不过透过 XML 描述档来建立使用者介面相对更简单,架构也更清晰,以后维护时更容易釐清问题。要使用这些介面元件,应透过 「R.java」 档中自动产生的 「R」 类别来调用。

Android程序架构4. values/ 参数值(value)目录

「values」 目录包含所有使用 XML 格式的参数值描述档,可以在此添加一些额外的资源如字串(很常用)、颜色、风格等。使用时也是透过 「R」 类别来调用。
Android 功能清单

Android程序架构5. AndroidManifest.xml

「AndroidManifest.xml」 是 Android 程式的功能清单,应用程式在这离列出该工程所提供的功能。当应用程式开启时,会提供诸如内容提供者(ContentProvider)、处理的资料类型、实际运行的类别、跨应用程式的资讯等等讯息。你可以在此指定你的应用程式会使用到的服务(诸如电话功能、网路功能、GPS功能等)。当你新增一个页面行为类别 (Activity) 时,你也需要先在此注册这个新增的 Activity 类别后,才能顺利调用。

转自:http://developer.51cto.com/art/201001/181343.htm

Android程序架构基本内容概述的更多相关文章

  1. Android 程序架构: MVC、MVP、MVVM、Unidirectional、Clean...

    摘选自:GUI 应用程序架构的十年变迁:MVC.MVP.MVVM.Unidirectional.Cleanhttps://zhuanlan.zhihu.com/p/26799645 MV* in An ...

  2. fir.im Weekly - iOS/Android 应用程序架构解析

    假如问你一个iOS or Android app的架构,你会从哪些方面来说呢? 本期 fir.im Weekly 收集了关于  iOS/Android 开发资源,也加入了一些关于 Web 前端方面的分 ...

  3. Android 学习手札(一) 应用程序架构

    1.资源列表 Android支持的资源列表 目   录 资源类型 描述 res/anim  XML  该目录用于存放帧(frame).动画或补间(tweened)动画文件 res/drawable   ...

  4. 工资8000以下的Android程序员注意了!接下来要准备面对残酷现实了……

    最近在知乎看到一个测试,特扎心: 以下三种情况,哪个最让你绝望? ❶ 每月工资去掉开销还存不到3千: ❷ 家人突然急病住院,医药费10万: ❸ 同班的家长都在争先恐后给孩子报名各种辅导班.兴趣班,但一 ...

  5. 转: GUI应用程序架构的十年变迁:MVC,MVP,MVVM,Unidirectional,Clean

    十年前,Martin Fowler撰写了 GUI Architectures 一文,至今被奉为经典.本文所谈的所谓架构二字,核心即是对于对于富客户端的 代码组织/职责划分 .纵览这十年内的架构模式变迁 ...

  6. 微信Android客户端架构演进之路

    这是一个典型的Android应用在从小到大的成长过程中的“踩坑”与“填坑”的历史.互联网的变化速度如此之快,1年的时间里,可以发生翻天覆地的变化.今天在这里,重新和大家回顾微信客户端架构的演进过程,以 ...

  7. android系统架构解析

    以上是我在这个课题下的一些参考博客或者网页链接.里面有对于android架构的一些较好的分析理解,接下来是楼主在阅读后自己的一些整理. Android采用层次化系统架构,官方公布的标准架构如下图所示. ...

  8. Android系统架构说明介绍

    Android系统架构说明介绍 Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高层到低层分别是应用程序层.应用程序框 ...

  9. 转载: android 学习架构

    http://www.cnblogs.com/forlina/archive/2011/06/29/2093332.html 引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWor ...

随机推荐

  1. 各大公司广泛使用的在线学习算法FTRL详解 - EE_NovRain

    转载请注明本文链接:http://www.cnblogs.com/EE-NovRain/p/3810737.html 现在做在线学习和CTR常常会用到逻辑回归( Logistic Regression ...

  2. POJ 1961 2406 (KMP,最小循环节,循环周期)

    关于KMP的最短循环节.循环周期,请戳: http://www.cnblogs.com/chenxiwenruo/p/3546457.html (KMP模板,最小循环节) POJ 2406  Powe ...

  3. POJ 2000

    #include<iostream> #include<cstdio> #define MAXN 10009 using namespace std; ]; int main( ...

  4. Hadoop InputFormat OutputFormat

    InputFormat有两个抽象方法: getSplits     createRecordReader   InputSplits 将数据按照Split进行切分,一个Split分给一个task执行. ...

  5. 小奇模拟赛9.13 by hzwer

    2015年9月13日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿(explo) [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞 ...

  6. QScrollArea可以帮助我们实现让一个widget的内容带有滚动条(QWidget里内置QScrollArea,QScrollArea里再内置其它QWidget)

    使用QScrollArea可以帮助我们实现让一个widget的内容带有滚动条,用户可以通过拖动滚动条来查看更多内容, 代码示例如下: 1.带有滚动条的widget列表 #include "w ...

  7. lines---hdu5124(离散化+数组模拟)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5124 就是有n条在x轴的线段,给你线段的左右端点,每条线段都会覆盖点,求出最多被覆盖多少次: #inc ...

  8. Help Jimmy--poj1661(dp)

    题目链接:http://poj.org/problem?id=1661 下图是左边的,右边的同理: #include<stdio.h> #include<string.h> # ...

  9. C#AutoResetEvent和ManualResetEvent的区别

    一:终止状态和非终止状态 首先说说线程的终止状态和非终止状态.AutoResetEvent和ManualResetEvent的构造函数中,都有bool变量来指明线程的终止状态和非终止状态.true表示 ...

  10. 设置PL/SQL Developer记住用户名密码