[入门八]Android的应用程序框架
16lz
2021-01-23
以HelloActivity程序为例,简单介绍Android应用程序的框架。希望读者可以根据HelloActivity,自己写出一个Andorid的应用程序。 HelloActivity工程的源代码在Android目录的development/samples/HelloActivity/中,代码的结构如下所示: development/samples/HelloActivity/ |-- Android.mk |-- AndroidManifest.xml |-- res | |-- layout | | `-- hello_activity.xml | `-- values | `-- strings.xml |-- src `-- com `-- example `-- android `-- helloactivity `-- HelloActivity.java 其中tests是一个独立的项目,可以暂时不考虑。其他部分看作一个Android的一应用程序的工程。这个工程主要的组成部分如下所示: Android.mk 是整个工程的“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)) 其中LOCAL_PACKAGE_NAME表示了这个包的名字。这个文件是最终生成的包(*.apk)的名称,注意,包的名称和应用程序目录的名称无关,而与这里的HelloActivity的名称有关。 AndroidManifest.xml 工程的描述文件 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.helloactivity"> <application android:label="Hello, Activity!"> <activity android:name="HelloActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest> 在工程描述文件中,package的名称需要和JAVA文件中包的名称相同,activity 的名称必须和JAVA文件中JAVA类的名称相同,JAVA文件的文件名也必须和其中类的名称相同。 而那个android:label的名字既是应用程序在菜单中的名字,也是应用程序启动后的标题。 HelloActivity.java 这是JAVA类文件,这个文件的路径表示在Andorid的JAVA包的结构中的位置,这个包的使用方式为com.example.android.helloactivity。 package com.example.android.helloactivity; import android.app.Activity; import android.os.Bundle; public class HelloActivity extends Activity { public HelloActivity() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.hello_activity); } } AndroidManifest.xml和*.JAVA的名称需要匹配(这里的HelloActivity.java和HelloActivity),否则是找不到JAVA类的。 程序编译完成后,将生成apk包,将其放置在system/app中即可。除了使用界面启动之外,还可以在QEMU仿真器的启动界面中,使用如下的方式启动: am start -n com.example.android.helloactivity/com.example.android.helloactivity.HelloActivity 事实上,启动的方法和工程描述文件中包的名称和类的名称有关。 几个注意点: 1、应用程序文件夹的名称并无实际的影响 2、Android.mk的LOCAL_PACKAGE_NAME,决定APK包的名称; 3、AndroidManifest.xml中需要包含包的名称和activity类的名称,并需要和JAVA文件中对应; 4、AndroidManifest.xml中application android:label的名称既是应用程序在界面中的名称,也是启动后的标题 |
本文转自www.35java.com