以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

更多相关文章

  1. Android(安卓)XML解析
  2. 【Android热修复与插件化 三】ClassLoader详解
  3. Android(安卓)选择器 PickerView实例,时间选择器、地址选择器、单
  4. Android(安卓)PackageManagerService的启动过程分析
  5. android MTP 过滤指定的文件格式
  6. Android常用秘籍总结
  7. Android--应用开发2(AndroidManfest.xml)
  8. Android系统信息与安全机制
  9. android ndk 使用第三方静态库

随机推荐

  1. android之hardwareAccelerated你不知道的
  2. popWindowdemo
  3. Android(安卓)menu菜单items间隔设置
  4. Android(安卓)NoteX Q9: PopupWindow set
  5. (转)Android(安卓)Contacts(一)—— 读取联
  6. android对应版本号
  7. android 下载ndk后 报错Android/sdk/ndk-
  8. Android(安卓)Button在中间显示
  9. android intent flag
  10. android studio 运行活动闪退Caused by: