关闭

AndroidManifest.xml——manifest

308人阅读 评论(0) 收藏 举报
分类:

语法(SYNTAX):

<manifest xmlns: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中引入的。

0
0
查看评论

AndroidManifest.xml 最全详解

AndroidManifest.xml 是每个android程序中必须的文件,它位于整个项目的根目录。我们每天都在使用这个文件,往里面配置程序运行所必要的组件,权限,以及一些相关信息。但是对于这个文件,我们真正又了解多少了,还是只是停留在只会简单的配置,而不明白其中的具体含义,以及为什么要这样设置?...
  • u012486840
  • u012486840
  • 2016-09-08 10:50
  • 37666

Android之AndroidManifest.xml文件解析和权限集合

程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: 1. android.permission.ACCESS_CHECKIN_PROPERTIES     允许读写访问”properties”表在 checkin数据库...
  • u011068702
  • u011068702
  • 2015-10-11 16:49
  • 1337

查看APK中AndroidManifest.xml内容

在没有源码只有apk的情况下,打开apk中的AndroidManifest.xml是乱码,这种情况下可以反编译AndroidManifest.xml,使之可以正常查看。
  • llj0201
  • llj0201
  • 2015-11-17 13:49
  • 1521

Android应用加解密--AndroidManifest文件加解密

最近对Android应用安全这一块比较关注,所以了解了一些apk加固产品。发现部分加固产品加固后的apk在反编译时会报错,反编译的结果只得到一个空的AndroidManifest.xml文件。针对此现象分析和查找一些资料,发现此情况是因为加固产品对AndroidManifest.xml文件作了一些修...
  • tomatomas
  • tomatomas
  • 2015-07-19 19:28
  • 4529

Android获取包名,版本号,以及AndroidManifest.xml不同元素下的 <meta-data>的值

1、获取包名,版本号: //获取包名: String packagename = this.getPackagename(); //在获取包名的情况下,获得版本号: String appversion = this.getPackageManager().getPackageInfo(pa...
  • u014076894
  • u014076894
  • 2015-01-14 17:16
  • 1390

AndroidManifest.xml中声明不同包中的Activity

package="com.android.tencent"       android:versionCode="1"       android:versionName="1.0&qu...
  • intheair100
  • intheair100
  • 2014-08-10 23:42
  • 717

AndroidManifest.xml中的<meta-data>属性介绍

本文转自:http://www.cnblogs.com/hoji-real/articles/2312003.html              android:resource=&...
  • dinglin_87
  • dinglin_87
  • 2012-04-17 22:05
  • 3982

还原反编译后AndroidManifest.xml乱码为明文

还原反编译后AndroidManifest.xml乱码工具 使用方法: java -jar AXMLPrinter2.jar D:\AndroidManifest.xml > AndroidManifest.txt  AXMLPrinter2.jar下载地址 :...
  • u012573920
  • u012573920
  • 2015-07-23 11:37
  • 5417

android 读取 AndroidManifest.xml 中的数据:版本号、应用名称、自定...

Android开发中我们常常需要知道,当前应用的版本信息。可以进行自动升级判断。扩展自定义数据 meta-data, 这些数据都在AndroidManifest.xml .我们如何获取这些信息呢? 下来示例如何读取这些数据。 1 版本信息、应用名称 2 Appliction 的M...
  • pj386960300
  • pj386960300
  • 2017-03-22 08:50
  • 187

安卓在AndroidManifest.xml文件中设置Android程序的启动界面方法

在AndroidManifest.xml可以看到有且只有一个Activity有这五行代码! android:label="@string/app_name" > ...
  • liuchen8800
  • liuchen8800
  • 2015-10-21 13:59
  • 2495
    个人资料
    • 访问:169269次
    • 积分:2698
    • 等级:
    • 排名:第15876名
    • 原创:111篇
    • 转载:1篇
    • 译文:14篇
    • 评论:17条
    最新评论