当前位置:编程学习 > XML/UML >>

AndroidManifest.xml文件详解(manifest)

语法(SYNTAX):

<manifestxmlns:android="http://schemas.android.com/apk/res/android"
          package="string"
          android:sharedUserId="string"
          android:sharedUserLabel="string resource"
          android:versionCode="integer"
          android:versionName="string"
          android:installLocation=["auto" | "internalOnly" |"preferExternal"]>
    . . .
</manifest>

被包含于(CONTAINED IN):

必须包含的元素(MUST CONTAIN):

<application>

可能包含的元素(CAN CONTAIN):

<instrumentation>

<permission>

<permission-group>

<permission-tree>

<uses-configuration>

<uses-permission>

<uses-sdk>

说明(DESCRIPTION):

这个元素是AndroidManifest.xml文件的根元素。它必须包含一个<application>元素,并且必须要指定xmlns:android和package属性。

属性(ATTRIBUTES):

xmlns:android

这个属性用于定义Android的命名空间。始终应该设置为:http://schemas.android.com/apk/android。

package

这个属性给应用程序定义了一个完整的Java样式的包名。这个名称应该是唯一的。名称中可以包含大写或小写字母、数字以及下划线(‘_’)。但是包名的每段都只能用字母开始。

应该使用所拥有的互联网域名作为基本的包名,以避免与其他开发者的冲突。例如,由Google发布的应用程序的包名都用com.google开始。在发布应用程序时永远不要使用com.example命名空间。

包名用于唯一的标识应用程序。它还是应用程序进程的默认名称(看<application>元素的process属性)和Activity的默认亲缘任务(请看<activity>元素的taskAffinity属性)。

警告:应用程序一旦发布,就不能够改变它的包名称了。包名定义了应用程序的标识,因此如果改变它,那么它就会被认为是不同的应用程序,并且之前版本的用户就不能够把应用升级到新版本。

android:sharedUserId

这个属性定义了一个Linux用户ID的名称,这个名称能够跟其他应用程序共享。默认情况下,Android会给它的每个应用程序都分配一个唯一的用户ID。但是,如果有两个或更多的应用程序把这个属性都设置了相同的值,那么它们将共享这个相同的ID---具有相同的数字签名。拥有相同用户ID的应用程序能够访问彼此的数据,并且如果期望,它们也可运行在相同的进程中。

android:sharedUserLabel

这个属性给共享的用户ID定义了一个用户可读的标签。这个标签必须用字符串资源来设置,不能使用原生的字符串。

这个属性在API Level 3中被引入,只有在sharedUserId属性被设置,这个属性才有意义。

android:versionCode

这个属性定义一个内部版本号,它仅用于判断一个版本是否比另一个版本新,数字越大表明版本越新。这个版本号不显示给用户,显示给用户的版本号要用versionName属性设置。

它的属性值必须是一个整数,如100。你可以按照自己的想法来定义它,只要保持后续版本号的数字更大。例如,它可以是一个版本号;也可以把x.y格式中的版本数字转换成一个由x和y分别编码的16位整数,x在低8位,y在高8位;也可以在每次发布版本时简单的增加数字的大小。

android:versionName

这个属性用于设置一个显示给永的版本号。属性值可以是原生的字符串,也可以引用一个字符串资源。这个字符串除了显示给用户之外,没有其他用途。而versionCode属性却拥有内部使用的版本号。

android:installLocation

这个属性用于设置应用程序默认的安装位置。

用下表中的关键词来设置属性值。

  

说明
internalOnly 应用程序必须只被安装在内部设备存储器上。如果设置这个值,应用程序永远不会被安装在外部存储器上。如果内部存储空间不足,那么系统不会安装这个应用程序。如果没有定义android:installLocation属性,就会使用这个值作为默认值。
auto 应用程序可以安装在外部存储器上,但是,默认情况下,系统会把应用程序安装在内部存储器上。如果内部存储空间不足,那么系统会把应用程序安装在外部存储器上。一旦安装,用户能够通过系统设置在内外存储器之间来移动应用程序。
preferExternal 应用程序偏好安装在外部存储器上(SD卡)。系统并不保证恪守这一个规则。如果外部存储器不可用或空间不足,或者应用程序使用了forward-locking机制(这种机制不支持外部存储),那么应用程序就可以安装在内部存储器上。一旦安装,用户能够通过系统设置在内外存储器之间移动应用程序。
 

警告:如果应用程序使用的Google Play的复制保护功能,那么它就不能被安装在设备的SD卡上。但是,如果使用Google Play的应用程序许可,那么它就能够被安装在内部或外部存储器上,包括SD卡。

注意:默认情况下,应用程序会被安装在内部存储器上,除非把这个属性值定义为auto或preferExternal,应用程序才能够被安装在外部存储器上。
当应用程序被安装在外部存储器上的时候:

1. .apk文件被保存在外部存储器上,但是任何应用程序数据(如数据库)依然被保存在内部设备存储器上;

2. 用一个key把存储器中保存的.apk文件加密,只允许应用程序在安装它的设备上运行。用户不能把安装在SD卡上应用程序转移到另一个设备的SD卡上,虽然在一个设备上能够使用多个SD卡。

3. 在用户要求的时候,应用程序能够被转移到内部存储器上。

用户也可以要求把应用程序从内部存储器移动到外部存储器上。但是,如果这个属性被设置为internalOnly,那么系统不允许用户把应用程序转移到外部存储器上。

这个属性在API Level 8中被引入。

被引入的版本(INTRODUCED IN):

除非属性说明中注释了引入的API Level版本,否则都是在API Level 1中引入的。

 

 

摘自 FireOfStar的专栏

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,