Android的应用程序结构分析

Android的应用程序结构分析

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

Android的应用程序结构分析:HelloActivity

本例以一个简单的HelloActivity程序为例,简单介绍Android应用程序的源代码结构。事实上,Android应用程序虽然不是很复杂,但 是通常涉及了JAVA程序,XML文件,Makefile多方面的内容。HelloActivity虽然简单,但是麻雀虽小,五脏俱全,是学习 Android应用程序的最好示例。

第一部分:HelloActivity的源代码

HelloActivity工程的源代码在Android目录的development/samples/HelloActivity/中,代码的结构如下所示:

development/samples/HelloActivity/

|--

|--

|-- res

| |-- layout

| | `-- hello_

| `-- values

| `--

|-- src

| `-- com

| `-- example

| `-- android

| `-- helloactivity

| `--

`-- tests

|--

|--

`-- src

`-- com

`-- android

`-- helloactivity

`--

其中tests是一个独立的项目,可以暂时不考虑。其他部分看作一个Android的一应用程序的工程。这个工程主要的组成部分如下所示:

:工程的描述文件,在运行时有用处

:整个工程的Makefile

res:放置资源文件的目录

src/com/example/android/helloactivity/:这是JAVA类文件,这个文件的路径表示在Andorid的JAVA包的结构中的位置,这个包的使用方式为ctivity。

第二部分: 编译的中间结果 这个HelloActivity工程经过编译后将生成out/target/common/obj/APPS

/HelloActivity_intermediates/目录,这个目录中的内容都是HelloActivity工程相关的,更具体地说都与 development/samples/HelloActivity/中的文件相关。

out/target/common/obj/APPS/HelloActivity_intermediates/

|-- (字节码)

|-- (JAR文件)

|-- public_ (根据resources结构生成的xml)

`-- src

|--

`-- com

`-- example

`-- android

`-- helloactivity

`-- (resources生成的文件)

是一个最重要的文件,它是给Android的JAVA虚拟机Dalvik运行的字节码文件。

是一个JAR文件,JAR的含义为Java ARchive,也就是Java 归档,是一种与平台无关的文件格式,可将多个文件合成一个文件。解压缩之后的目录结构:(JAVA标准编译得到的类)

classes

|-- META-INF

| `--

`-- com

`-- example

`-- android

`-- helloactivity

|--

|-- R$

|-- R$

|-- R$

|-- R$

`--

各个以class为扩展名的文件,事实上是JAVA程序经过编译后的各个类的字节码。

第三部分: 目标apk文件

目标apk文件是Android的JAVA虚拟机Dalvik安装和运行的文件,事实上这个apk文件将由编译的中间结果和原始文件生成。apk文件的本质是一个zip包。这个APK包解压缩后的目录结构如下所示:

out/target/product/generic/obj/APPS/HelloActivity_intermediates/_FILES/

|--

|-- META-INF

| |--

| |-- | `--

|--

|-- res

| `-- layout

| `-- hello_

`--

值得注意的是,这里的xml文件经过了处理,和原始的文件不太一样,不能按照文本文件的方式阅读。

第四部分: 源代码的各个文件

是整个工程的“Makefile”,其内容如下所示:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := samples

# Only compile source java files in this apk.

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_PACKAGE_NAME := HelloActivity

LOCAL_SDK_VERSION := current

include $(BUILD_PACKAGE)

# Use the following include to make our test apk.

include $(call all-makefiles-under,$(LOCAL_PATH))

这个文件在各个Android的工程中都是类似的,其中LOCAL_PACKAGE_NAME表示了这个包的名字。LOCAL_MODULE_TAGS 表示了模块的标,在这里使用的是

samples,正式的应用程序(packages目录中的应用)中多使用eng development。

是这个HelloActivity工程的描述文件,其内容如下所示:

package="ctivity">

其中package用于说明这个包的名称,android:labeapplication中的内容是表示这个应用程序在界面上显示的标题,activity中的android:name表示这个Android的活动的名称。

文件src/com/example/android/helloactivity/是程序主要文件,由JAVA语言写成

package ctivity;

import ty;

import ;

public class HelloActivity extends Activity {

public HelloActivity() {

}

@Override

public void onCreate(Bundle savedInstanceState) {

te(savedInstanceState);

setContentView(_activity);

}

}

ctivity表示的是这个包的名称,在文件的头部引入了两个包ty是一个Android活动(Activity)包,每一个Android活动都需要继承Activity类。

包用于映射字符串的值。

onCreate()是一个重载的函数,在这个函数中实现应用程序创建的所执行的过程。其中setContentView()设置当前的视图(View)。

设置的方法是使用一个文件,这个文件因此决定了视图中包含的内容。这里使用的是_activity,表示从res/layout/目录中使用hello_文件。

res/layout/hello_文件的内容如下所示:

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:textSize="18sp"

android:autoText="true"

android:capitalize="sentences"

android:text="@string/hello_activity_text_text" />

其中定义了一个可编辑的文本(EditText),下面的各项其实是它的各种属性,android:text表示这个文本的内 容,string/hello_activity_text_text表示找到相应的文件,也就是res/value/文件中的 hello_activity_text_text文本。

res/value/的内容如下所示:

Hello, World!

hello_activity_text_text文本被res/layout/hello_文件引用,正是应用程序运行时在屏幕显示的文本。

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

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信