四、Android App Manifest(清单)--Android Api 中文翻译(一)

来源:互联网 发布:我的世界ip地址和端口 编辑:程序博客网 时间:2024/05/22 18:12

每一个安卓应用在他的根目录必须有一个AndroidManifest.xml的文件。这个文件给Android系统提供了必要的信息,在运行任何代码前必须通知系统必须有这个文件。除此之外,清单文件还有以下作用:

  • 它命名了应用程序的包名,包名作为应用程序的惟一标识符。
  • 它描述了应用程序的组件 - 活动、服务、广播、内容提供者。这些组件组成了一个应用。他为继承自各个组件的类命名,并且声明它们的功能(例如,他们能够处理哪个意图)。这些声明让Android系统知道有那些组件和它们启动的条件。
  • 它决定应用程序组件使用那些进程
  • 它声明必须拥有的哪些应用程序权限,使用这些权限去访问受保护的api和其他应用程序交互。
  • 它也声明了其他程序和自身的应用程序组件进行交互的必需权限
  • 它列举了Instrumentation类,这个类提供分析和随着应用程序正在执行的其他信息。这些声明只会出现在开发和测试的清单文件中,当程序发布的时候,它们就会被删除
  • 它声明了程序必需的最低的Android api版本
  • 它列举了所以和应用程序相关的链接库

  1. 清单文件结构
    下面的图表显示了清单文件的基本结构,清单文件可以包含任何其中的一些子元素。这些子元素连同它自己的一些属性,都被定义在一个单独的文件中。在这个图表后面的字母表文件中,点击图中的元素名称,可以查看任何元素的详细信息。
<?xml version="1.0" encoding="utf-8"?><manifest>    <uses-permission />    <permission />    <permission-tree />    <permission-group />    <instrumentation />    <uses-sdk />    <uses-configuration />      <uses-feature />      <supports-screens />      <compatible-screens />      <supports-gl-texture />      <application>        <activity>            <intent-filter>                <action />                <category />                <data />            </intent-filter>            <meta-data />        </activity>        <activity-alias>            <intent-filter> . . . </intent-filter>            <meta-data />        </activity-alias>        <service>            <intent-filter> . . . </intent-filter>            <meta-data/>        </service>        <receiver>            <intent-filter> . . . </intent-filter>            <meta-data />        </receiver>        <provider>            <grant-uri-permission />            <meta-data />            <path-permission />        </provider>        <uses-library />    </application></manifest>
所有的按字母顺序排列的元素可以出现在下面列出清单文件中。这些是唯一合法的元素;你不能添加自己的元素或属性。   
 <action><activity><activity-alias><application><category><data><grant-uri-permission><instrumentation><intent-filter><manifest><meta-data><permission><permission-group><permission-tree><provider><receiver><service><supports-screens><uses-configuration><uses-feature><uses-library><uses-permission><uses-sdk> 
  1. 文件约定
    这些约定和规则通常适用于所有清单中的元素和属性:
    元素
    仅仅只有和元素是被需要的,他们必须出现并且只能出现一次。其他的可以多次出现或者不出现 - 虽然它们有些会出现在清单文件中去完成一些有意思的事情。
    属性
    从意义上来说,所有的属性都是可选的。然而,有一些必须指定一个元素来完成它们的目的。使用文档作为指南。对于有些真实的可选属性,它提供一个默认值和在缺少规范的情况下改变它的状态。
    除了在文件下的属性,其他的属性必须都有一个android:的前缀-例如,android:alwaysRetainTaskState。因为前缀是通用的,文档通常省略了它指属性的名字。
    声明类名
    许多元素对应于Java对象,包括元素应用程序本身(元素)和它的主要组件-活动(),服务(),广播接收器(),和内容提供者()。
    如果你定义了组件(Activity,Service,BroadcastReceiver,ContentProvider)的一个子类,它通过一个name的属性来声明,这个name必须包含整个包名称。例如,一个service的子类可以像下面这样定义:
<manifest . . . >    <application . . . >        <service android:name="com.example.project.SecretService" . . . >            . . .        </service>        . . .    </application></manifest>
如果在<manifest>属性中定义了包名,name名字前面的包名称就可以省略。下面这样的定义和上面是一样的。
<manifest package="com.example.project" . . . >    <application . . . >        <service android:name=".SecretService" . . . >            . . .        </service>        . . .    </application></manifest>
当启动一个组件的时候,Android创建一个组件的子类,如果子类没有被指定,他将会创建一个基础类的实例。

多值
如果需要指定多个值,这些值几乎都是相同的,可以在一个元素内列举多个值。比如,一个意图过滤器可以添加多个动作:

<intent-filter . . . >    <action android:name="android.intent.action.EDIT" />    <action android:name="android.intent.action.INSERT" />    <action android:name="android.intent.action.DELETE" />    . . .</intent-filter>

资源数值
一些属性必须有显示给用户的一些值-例如,一个活动的一个标签和一个图标。这些属性的值应该被本地化,通过一个资源或者主题来设置它们。
资源是用以下格式表示的值,
@[package:]type:name
如果资源和应用程序有相同的包,包的属性可以省略。type是一个资源的类型-像字符串和图片-指定一个特定的名字来识别资源。例如

<activity android:icon="@drawable/smallPic" . . . >
使用主题是用一个相似的表达式,?[package:]type:name

字符串
当一个属性值是字符串的时候,必须用到双斜杠的转义字符-例如,”\n”代表一个换行,”\uxxxx”代表unicode编码。


  1. 文件特性
    以下部分描述一些Android的特性是如何映射在清单文件中。
    意图过滤器
    应用程序的核心组件(activities,services和broadcast receiver)都是由一个意图所启动。一个意图是(一个意图对象)描述所需的行动的信息,包含数据去采取行动。组件的category会执行这个行动和其他相关的信息。如果需要启动一个新的组件实例的话,Android提供了适应的组件来回应意图,并且通过意图对象来传输。
    组件声明了它们的功能-他们可以回应的意图组件的类型-通过意图过滤器,因为Android系统在启动一个组件之前。必须了解这个组件能够处理哪些意图。意图过滤器是在清单文件中用元素定义。一个组件可以有很多的过滤器,每一个都代表了不同的功能。
    一个有明显标签的组件意图会直接激活,这个过滤器将不会起作用。如果一个组件没有明显的意图标签,那么他就只能通过意图过滤器来启动。
    更多关于意图过滤器的知识,请查看意图过滤器的文档
    图标和标签
    若干的组件都有一个小的图标和文字标签来显示给用户。有一些可以在显示的屏幕可能还会有一个详细的描述。例如,
    (正在翻译中。。。)
0 0