您的位置:中国赌城 > 中国制造 > Android应用清单,应用清单

Android应用清单,应用清单

发布时间:2019-06-05 23:00编辑:中国制造浏览(113)

    图片 1

    每个Android应用的根目录中都必须包含一个AndroidManifest.xml文件。清单文件向Android系统提供必要信息,系统必须具有这些信息方可运行应用的任何代码。

    应用清单

    每个应用的根目录中都必须包含一个 AndroidManifest.xml 文件(且文件名精确无误)。 清单文件向 Android 系统提供应用的必要信息,系统必须具有这些信息方可运行应用的任何代码。

    此外,清单文件还可执行以下操作:

    • 为应用的 Java 软件包命名。软件包名称充当应用的唯一标识符。
    • 描述应用的各个组件,包括构成应用的 Activity、服务、广播接收器和内容提供程序。它还为实现每个组件的类命名并发布其功能,例如它们可以处理的 Intent消息。这些声明向 Android 系统告知有关组件以及可以启动这些组件的条件的信息。
    • 确定托管应用组件的进程。
    • 声明应用必须具备哪些权限才能访问 API 中受保护的部分并与其他应用交互。还声明其他应用与该应用组件交互所需具备的权限
    • 列出 Instrumentation类,这些类可在应用运行时提供分析和其他信息。这些声明只会在应用处于开发阶段时出现在清单中,在应用发布之前将移除
    • 声明应用所需的最低 Android API 级别
    • 列出应用必须链接到的库

    以色列IMI Systems公司推出了一种硬件系统,可保护计算机控制的军事硬件免受网络攻击。该硬件系统称为“被动缓冲区”,可保护基于计算机和计算机控制的系统和应用程序。

    清单文件可执行以下操作:

    清单文件结构

    下面的代码段显示了清单文件的通用结构及其可包含的每个元素。每个元素及其所有属性全部记录在一个单独的文件中。

    下面是清单文件的示例:

    <?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>

    注:这些是仅有的合法元素 – 您无法添加自己的元素或属性。

    确保完整和连续的操作可以实时监视和控制受保护系统与外围元件和组件之间的数据流,确保仅实现合法的消息、控制和协议。此被动缓冲区监控确保所有系统的操作符合系统工程师定义的参数、逻辑和顺序。

    • 为应用的Java软件包命名。软件包名称充当应用的唯一标识符。
    • 描述应用的各个组件,包括构成应用的Activity、Service、BroadcastReceiver和ContentProvider。它还为实现每个组件的类命名并发布其功能。这些声明向Android系统告知有关组件以及可以启动这些组件的条件的信息。
    • 确定托管应用组件的进程。
    • 声明应用必须具备哪些权限才能访问API中受保护的部分并与其他应用交互。还声明其他应用与该应用组件交互所需具备的权限。
    • 列出Instrumentation类,这些类可在应用运行时提供分析和其他信息。这些声明只会在应用处于开发阶段时出现在清单中,在应用发布之前将移除。
    • 声明应用所需的最低AndroidAPI级别。
    • 列出应用必须链接到的库。

    文件约定

    本节描述普遍适用于清单文件中所有元素和属性的约定和规则。

    被动缓冲系统保护的典型系统是:武器和弹药、关键系统基础设施的计算机化组件,有人驾驶或无人驾驶车辆、飞机和船舶、以及基础设施、医疗系统和工业车间中的各种关键计算机化组件。

    注意:准备要在Chromebook上运行的Android应用时,要考虑一些重要的硬件和软件功能限制。

    元素

    只有 <manifest> 和 <application> 元素是必需的,它们都必须存在并且只能出现一次。其他大部分元素可以出现多次或者根本不出现。但清单文件中必须至少存在其中某些元素才有用。

    如果一个元素包含某些内容,也就包含其他元素。所有值均通过属性进行设置,而不是通过元素内的字符数据设置。

    同一级别的元素通常不分先后顺序。例如,<activity>、<provider>和 <service> 元素可以按任何顺序混合在一起。这条规则有两个主要例外:

    • <activity-alias> 元素必须跟在别名所指的 <activity> 之后。
    • <application>元素必须是 <manifest> 元素内最后一个元素。换言之,</manifest> 结束标记必须紧接在 </application>结束标记后。

    系统的设置由一组规则和过滤器定义,这些规则和过滤器确定每个协议的配置、内容、上下文和角色。用于子系统和用户的内置硬连线识别消除了未经授权的操作员的篡改。除了对系统和功能的保护级别之外,被动缓冲区还可以防止访问受保护系统中高度机密的核心级元素。

    下面的代码显示了清单文件的通用结构及其可包含的每个元素。每个元素及其所有属性全部记录在一个单独的文件中。

    属性

    从某种意义上说,所有属性都是可选的。但是,必须指定某些属性,元素才可实现其目的。请使用本文档作为参考。对于真正可选的属性,它将指定默认值或声明缺乏规范时将执行何种操作。

    除了根 <manifest>元素的一些属性外,所有属性名称均以 android: 前缀开头。例如,android:alwaysRetainTaskState。由于该前缀是通用的,因此在按名称引用属性时,本文档通常会将其忽略。

    一旦激活,被动缓冲区就会持续监控系统,实时分析和表征受保护资源和协议的完整性和状态。如果怀疑受保护的系统受到损害,则会启用预防措施,从而限制不良行为。系统可以管理和控制命令的相关性和这些命令的内容,以减轻功能障碍。例如,命令的内容逻辑,过程控制和标识。

    <?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>
    

    声明类名

    许多元素对应于 Java 对象,包括应用本身的元素(<application> 元素)及其主要组件:Activity (<activity>)、服务 (<service>)、广播接收器 (<receiver>) 以及内容提供程序 (<provider>)。

    如果按照您针对组件类(Activity、Service 和 BroadcastReceiver ContentProvider)几乎一直采用的方式来定义子类,则该子类需通过 name 属性来声明。该名称必须包含完整的软件包名称。例如,Service 子类可能会声明如下:

    <manifest . . . >
        <application . . . >
            <service android:name="com.example.project.SecretService" . . . >
                . . .
            </service>
            . . .
        </application>
    </manifest>
    

    但是,如果字符串的第一个字符是句点,则应用的软件包名称(如 <manifest>元素的 package 属性所指定)将附加到该字符串。以下赋值与上述方法相同:

    <manifest package="com.example.project" . . . >
        <application . . . >
            <service android:name=".SecretService" . . . >
                . . .
            </service>
            . . .
        </application>
    </manifest>
    

    当启动组件时,Android 系统会创建已命名子类的实例。如果未指定子类,则会创建基类的实例。

    虽然系统会阻止可能危及用户或设备的自动操作,但它也具有一定级别的手动覆盖以使用户能够在战斗中继续和操作系统。在这种情况下,系统允许某些基于角色的层次结构继续进行,而不管受保护系统的标识设置如何。

    以下是可出现在清单文件中的所有元素:

    多个值

    如果可以指定多个值,则几乎总是在重复此元素,而不是列出单个元素内的多个值。例如,intent 过滤器可以列出多个操作:

    <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>
    
    <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>
    

    资源值

    某些属性的值可以显示给用户,例如,Activity 的标签和图标。这些属性的值应该本地化,并通过资源或主题进行设置。资源值用以下格式表示:

    @[<i>package</i>:]<i>type</i>/<i>name</i>
    

    如果资源与应用在同一个软件包中,可以省略软件包名称。类型是资源类型,例如字符串或可绘制对象,名称是标识特定资源的名称。下面是示例:

    <activity android:icon="@drawable/smallPic" . . . >
    

    主题中的值用类似的方法表示,但是以 ? 开头,而不是以 @ 开头:
    ?[<i>package</i>:]<i>type</i>/<i>name</i>

    注意:这些是仅有的合法元素(我们无法添加自己的元素或属性)。

    字符串值

    如果属性值为字符串,则必须使用双反斜杠 ( ) 转义字符,例如,使用 n 表示换行符或使用 uxxxx 表示 Unicode 字符。

    1. 只有<manifest><application>元素是必需的,这两个元素都必须存在并且只能出现一次。其他大部分元素可以出现多次或者不出现。但是清单文件中必须至少存在其中某些元素才有用。
    2. 如果一个元素包含其他元素。所有值均通过属性进行设置,而不是通过元素内的字符数据设置。
    3. 同一级别的元素通常不分先后顺序。这条规则有两个主要的例外:

    文件功能

    下文介绍在清单文件中体现某些 Android 特性的方式。

    • <activity-alias>元素必须跟在别名所指的<activity>之后。
    • <application>元素必须是<manifest>元素内最后一个元素。

    Intent 过滤器

    应用的核心组件(例如其 Activity、服务和广播接收器)由 intent 激活。Intent 是一系列用于描述所需操作的信息(Intent 对象),其中包括要执行操作的数据、应执行操作的组件类别以及其他相关说明。Android 系统会查找合适的组件来响应 intent,根据需要启动组件的新实例,并将其传递到 Intent对象。

    组件将通过 intent 过滤器公布它们可响应的 intent 类型。由于Android 系统在启动某组件之前必须了解该组件可以处理的 intent,因此 intent 过滤器在清单中被指定为 <intent-filter> 元素。一个组件可有任意数量的过滤器,其中每个过滤器描述一种不同的功能。

    显式命名目标组件的 intent 将激活该组件,因此过滤器不起作用。不按名称指定目标的 intent 只有在能够通过组件的一个过滤器时才可激活该组件。

    如需了解有关如何根据 intent 过滤器测试 Intent 对象的信息,请参阅 Intent 和 Intent 过滤器文档。

    1. 从某种意义上说,所有属性都是可选的。但是,必须指定某些属性,元素才可实现其目的。对于真正可选的属性,它将指定默认值或声明缺乏规范时将执行何种操作。
    2. 除了根<manifest>元素的一些属性外,所有属性名称均以android前缀开头。

    图标和标签

    对于可以显示给用户的小图标和文本标签,大量元素具有 iconlabel 属性。此外,对于同样可以显示在屏幕上的较长说明文本,某些元素还具有 description 属性。例如,<permission> 元素具有所有这三个属性。因此,当系统询问用户是否授权给请求获得权限的应用时,权限图标、权限名称以及所需信息的说明均会呈现给用户。

    无论何种情况下,在包含元素中设置的图标和标签都将成为所有容器子元素的默认 iconlabel 设置。因此,在 <application> 元素中设置的图标和标签是每个应用组件的默认图标和标签。同样,为组件(例如 <activity> 元素)设置的图标和标签是组件每个 <intent-filter> 元素的默认设置。如果 <application> 元素设置标签,但是 Activity 及其 intent 过滤器不执行此操作,则应用标签将被视为 Activity 和 intent 过滤器的标签。

    在实现过滤器公布的功能时,只要向用户呈现组件,系统便会使用为 intent 过滤器设置的图标和标签表示该组件。例如,具有 android.intent.action.MAIN 和 android.intent.category.LAUNCHER 设置的过滤器将 Activity 公布为可启动应用的功能,即,公布为应显示在应用启动器中的功能。在过滤器中设置的图标和标签显示在启动器中。

    本文由中国赌城发布于中国制造,转载请注明出处:Android应用清单,应用清单

    关键词: 中国赌城