David.Ko

Follow my heart!
posts - 100, comments - 11, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

【转】Manifest 概述

Posted on 2009-10-28 13:47 David.Ko 阅读(274) 评论(0)  编辑  收藏 所属分类: Android
转载自:http://blog.csdn.net/xieyali/archive/2009/07/05/4323575.aspx

任何 Android应用程序的基础都是 Manifest文件: Manifest.xml,这个文件保存在工程的根目录下。在这个文件里声明应用程序用到的所有组件,例如: activities services,等等,而且说明这些组件如何组织到应用程序系统中;例如:可以表明哪一个 activity(或者 activities)应该出现在设备的主窗口中(例如: launcher)。

当你创建工程时,系统帮助生成一个原始的 manifest文件。对于只包含一个 activity的简单的应用程序,原始的 manifest文件够了,或者只需要很小的改动。另外, manifest也可以很复杂,比如 Android自带的 API样例,该文件就超过 1000多行。你的应用程序的 manifest行数大概也就介于此间吧。

manifest文件的大部分有趣的功能会在以后相应的章节更加详细的介绍。比如 service元素会在创建 service章节详细讲述。现在,主要关注 manifest文件的作用和它的一般结构。

在文件开始,有根,文件基本上就正确

manifest文件的根是这样一个 manifest元素:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.commonsware.android.search">
      ...
</manifest>

注意命名空间声明。奇怪的是,自动生成的 manifest文件,命名空间是应用在属性上,而不是元素上(例如,是 manifest,不是 android:manifest),然而,这种形式工作正确,只要 android不发生改变,就坚持用这种形式。

根元素 manifest里面最有用的信息是 package属性(奇怪的是 package前没有命名空间)。这里,你可填成你的 java package的名子,以后在 manifest文件里,如果需要类的名子,就可以用点来代替 package的名子,例如:如果在 manifest文件需要引用 com.commonsware.android.search.Snicklefritz,你就可以写成 .Snicklefitz,因为 com.commonsware.android.search已经被定义成应用程序的包。

权限,特殊工具,和应用程序

manifest元素里有如下子元素:

uses-permission元素,表示应用程序必须据有这些权限才能工作正常- permissions章节

permission元素,定义一些权限,当其它的程序如果想使用你的程序的数据或者逻辑时,必须据有这些权限,参考 permissions章节

instrumentation元素,表示某些代码,当一些重要的系统事件发生时,这些代码被调用,例如:启动一个 activities,打印 log或者监视某些信息。

uses-library元素,挂钩( hook)进可选的 android组件里,例如 mapping services

application元素,定义 manifest描述的应用程序的细节。

在上面的例子中, uses-permission元素表明了应用程序将要使用的一些设备的功能,在这个例子中,就是程序据有了定位自己的功能。 applicaton元素描述了一些 activities serives和其它组成应用的一些组件。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.commonsware.android">
    <uses-permission
         android:name="android.permission.ACCESS_LOCATION" />
    <uses-permission
         android:name="android.permission.ACCESS_GPS" />
    <uses-permission
         android:name="android.permission.ACCESS_ASSISTED_GPS" />
    <uses-permission
          android:name="android.permission.ACCESS_CELL_ID" />
    <application>
         ...
    </application>
</manifest>

应用程序需要实现一些功能,对吗?

manifest文件最重要的部分就是 application元素的子元素。

创建新工程时,默认生成只含一个 activity元素的 manifest文件,如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.commonsware.android.skeleton">
     <application>
             <activity android:name=".Now" android:label="Now">
                  <intent-filter>
                     <action android:name="android.intent.action.MAIN" />
                      <category android:name="android.intent.category.LAUNCHER" />
                  </intent-filter>
            </activity>
       </application>
</manifest>

这个 activity元素提供了如下信息, android:name-实现 activity的类;和 android:label-当运行 activity时显示的名字; intent-filter子元素-描述在什么条件下 activity才显示。这个 activity元素设置在运行时显示这个 activity,现在你可以运行它了。在后面的章节,会看到有多个 activities的工程。

可能还会有一个或者多个 receiver元素,表示在一定条件下,一些非 activites组件需要被触发,例如收到一条短信。这被称作是 intent receivers,在后续章节会讲到。

可能还会有一个或者多个 provider元素,表示 content providers组件,它们负责提供数据给 activities使用,并且,如果有权限,其它应用程序也可以使用它们提供的数据。它们把数据库或者其它数据存储包装成一个接口 供其它应用程序使用。后续章节会讲怎么创建 content provides和如何使用 content provides。

最后,可能会有一个或者多个 service元素,描述 services-独立于 activity,并且长期运行的一些代码片段。最好的例子就是 mp3播放器,你想边听音乐,边打开其它 activities,这时候 mp3播放器的使用界面被覆盖。后面有两章会讲如何创建和使用 services。




只有注册用户登录后才能发表评论。


网站导航: