AndroidManifest.docx

上传人:b****5 文档编号:27958860 上传时间:2023-07-06 格式:DOCX 页数:22 大小:27.27KB
下载 相关 举报
AndroidManifest.docx_第1页
第1页 / 共22页
AndroidManifest.docx_第2页
第2页 / 共22页
AndroidManifest.docx_第3页
第3页 / 共22页
AndroidManifest.docx_第4页
第4页 / 共22页
AndroidManifest.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

AndroidManifest.docx

《AndroidManifest.docx》由会员分享,可在线阅读,更多相关《AndroidManifest.docx(22页珍藏版)》请在冰豆网上搜索。

AndroidManifest.docx

AndroidManifest

AndroidManifest

xmlversion="1.0"encoding="utf-8"?

>

--基本配置-->

--应用配置-->

--Activity配置-->

...

--Service配置-->

...

--Receiver配置-->

...

--Provider配置-->

--所需类库配置-->

 

从以上示例代码中,我们可以看出Android配置文件采用XML作为描述语言,每个XML标签都不同的含义,大部分的配置参数都放在标签的属性中,下面我们便按照以上配置文件样例中的先后顺序来学习Android配置文件中主要元素与标签的用法。

AndroidManifest.xml配置文件的根元素,必须包含一个元素并且指定

A、xmlns:

android

定义android命名空间,一般为

 

B、package

指定本应用内java主程序包的包名,它也是一个应用进程的默认名称

 

C、sharedUserId

表明数据权限,因为默认情况下,Android给每个APK分配一个唯一的UserID,所以是默认禁止不同APK访问共享数据的。

若要共享数据,第一可以采用SharePreference方法,第二种就可以采用sharedUserId了,将不同APK的sharedUserId都设为一样,则这些APK之间就可以互相共享数据了。

详见:

D、sharedUserLabel

一个共享的用户名,它只有在设置了sharedUserId属性的前提下才会有意义

 

E、versionCode

是给设备程序识别版本(升级)用的必须是一个interger值代表app更新过多少次,比如第一版一般为1,之后若要更新版本就设置为2,3等等。

 

F、versionName

这个名称是给用户看的,你可以将你的APP版本号设置为1.1版,后续更新版本设置为1.2、2.0版本等等。

 

G、installLocation

安装参数,是Android2.2中的一个新特性,installLocation有三个值可以选择:

internalOnly、auto、preferExternal

选择preferExternal,系统会优先考虑将APK安装到SD卡上(当然最终用户可以选择为内部ROM存储上,如果SD存储已满,也会安装到内部存储上)

选择auto,系统将会根据存储空间自己去适应

选择internalOnly是指必须安装到内部才能运行

(注:

需要进行后台类监控的APP最好安装在内部,而一些较大的游戏APP最好安装在SD卡上。

现默认为安装在内部,如果把APP安装在SD卡上,首先得设置你的level为8,并且要配置android:

installLocation这个参数的属性为preferExternal)

 

标签语法范例如下。

android="

   package="string"

   android:

sharedUserId="string"

   android:

sharedUserLabel="stringresource" 

   android:

versionCode="integer"

   android:

versionName="string"

   android:

installLocation=["auto"|"internalOnly"|"preferExternal"]>

......

为了保证Android应用的安全性,应用框架制定了比较严格的权限系统,一个应用必须声明了正确的权限才可以使用相应的功能,例如我们需要让应用能够访问网络就需要配置“android.permission.INTERNET”,而如果要使用设备的相机功能,则需要设置“android.permission.CAMERA”等。

就是我们最经常使用的权限设定标签,我们通过设定android:

name属性来声明相应的权限名,比如在微博应用实例中,我们就是根据应用的所需功能声明了对应的权限,相关代码如下。

......

   

--网络相关功能-->

   

name="android.permission.INTERNET"/>

   

name="android.permission.ACCESS_NETWORK_STATE"/>

   

name="android.permission.ACCESS_COARSE_LOCATION"/>

   

name="android.permission.ACCESS_FINE_LOCATION"/>

   

--读取电话状态-->

   

name="android.permission.READ_PHONE_STATE"/>

   

--通知相关功能-->

   

name="android.permission.VIBRATE"/>

......

权限声明标签,定义了供给使用的具体权限,通常情况下我们不需要为自己的应用程序声明某个权限,除非需要给其他应用程序提供可调用的代码或者数据,这个时候你才需要使用标签。

该标签中提供了android:

name权限名标签,权限图标android:

icon以及权限描述android:

description等属性,另外还可以和以及配合使用来构造更有层次的、更有针对性权限系统。

标签语法范例如下。

description="stringresource"

   android:

icon="drawableresource"

   android:

label="stringresource"

   android:

name="string"

   android:

permissionGroup="string"

   android:

protectionLevel=["normal"|"dangerous"|"signature"|"signatureOrSystem"]/>

用于声明Instrumentation测试类来监控Android应用的行为并应用到相关的功能测试中,其中比较重要的属性有:

测试功能开关android:

functionalTest,profiling调试功能开关android:

handleProfiling,测试用例目标对象android:

targetPackage等。

另外,我们需要注意的是Instrumentation对象是在应用程序的组件之前被实例化的,这点在组织测试逻辑的时候需要被考虑到。

标签语法范例如下。

functionalTest=["true"|"false"]

   android:

handleProfiling=["true"|"false"]

   android:

icon="drawableresource"

   android:

label="stringresource"

   android:

name="string"

   android:

targetPackage="string"/>

用于指定Android应用中所需要使用的SDK的版本,比如我们的应用必须运行于Android2.0以上版本的系统SDK之上,那么就需要指定应用支持最小的SDK版本数为5;当然,每个SDK版本都会有指定的整数值与之对应,比如我们最常用的Android2.2.x的版本数是8。

当然,除了可以指定最低版本之外,标签还可以指定最高版本和目标版本,语法范例如下。

minSdkVersion="integer" 

   android:

targetSdkVersion="integer"

   android:

maxSdkVersion="integer"/>

这两个标签都是用于描述应用所需要的硬件和软件特性,以便防止应用在没有这些特性的设备上安装。

标签中,比如有些设备带有D-pad或者Trackball这些特殊硬件,那么android:

reqFiveWayNav属性就需要设置为true;而如果有一些设备带有硬件键盘,android:

reqHardKeyboard也需要被设置为true。

另外,如果设备需要支持蓝牙,我们可以使用

name="android.hardware.bluetooth"/>来支持这个功能。

这两个标签主要用于支持一些特殊的设备中的应用,两个标签的语法范例分别如下。

reqFiveWayNav=["true"|"false"] 

   android:

reqHardKeyboard=["true"|"false"]

   android:

reqKeyboardType=["undefined"|"nokeys"|"qwerty"|"twelvekey"]

   android:

reqNavigation=["undefined"|"nonav"|"dpad"|"trackball"|"wheel"]

   android:

reqTouchScreen=["undefined"|"notouch"|"stylus"|"finger"]/>

name="string"

   android:

required=["true"|"false"]

   android:

glEsVersion="integer"/>

用于指定Android应用可使用的用户库,除了系统自带的android.app、android.content、android.view和android.widget这些默认类库之外,有些应用可能还需要一些其他的Java类库作为支持,这种情况下我们就可以使用标签让ClassLoader加载其类库供Android应用运行时用。

标签的用法很简单,以下是语法范例。

name="string"

   android:

required=["true"|"false"]/>

小贴士:

当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Java类加载到JVM里头运行,负责加载Java类的这部分就叫做ClassLoader。

当然,ClassLoader是由多个部分构成的,每个部分都负责相应的加载工作。

当运行一个程序的时候,JVM启动,运行BootstrapClassLoader,该ClassLoader加载java核心API(ExtClassLoader和AppClassLoader也在此时被加载),然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class,这就是一个Java程序最基本的加载流程。

对于一些应用或者游戏来说,只能支持某些屏幕大小的设备或者在某些设备中的效果比较好,我们就会使用标签来指定支持的屏幕特征。

其中比较重要的属性包括:

屏幕自适应属性android:

resizeable,小屏(android:

smallScreens)、中屏(android:

normalScreens)、大屏(android:

largeScreens)和特大屏(android:

xlargeScreens)支持属性,按屏幕渲染图像属性android:

anyDensity以及最小屏幕宽度属性android:

requiresSmallestWidthDp等。

标签的语法范例如下。

resizeable=["true"|"false"]

   android:

smallScreens=["true"|"false"]

   android:

normalScreens=["true"|"false"]

   android:

largeScreens=["true"|"false"]

   android:

xlargeScreens=["true"|"false"]

   android:

anyDensity=["true"|"false"]

   android:

requiresSmallestWidthDp="integer"

   android:

compatibleWidthLimitDp="integer"

   android:

largestWidthLimitDp="integer"/>

应用配置的根元素,位于下层,包含所有与应用有关配置的元素,其属性可以作为子元素的默认属性,常用的属性包括:

应用名android:

label,应用图标android:

icon,应用主题android:

theme等。

当然,标签还提供了其他丰富的配置属性,由于篇幅原因就不列举了,大家可以打开AndroidSDK文档来进一步学习,以下是语法范例。

A、android:

allowClearUserData('true'or'false')

用户是否能选择自行清除数据,默认为true,程序管理器包含一个选择允许用户清除数据。

当为true时,用户可自己清理用户数据,反之亦然

 

B、android:

allowTaskReparenting('true'or'false')

是否允许activity更换从属的任务,比如从短信息任务切换到浏览器任务

 

C、android:

backupAgent

这也是Android2.2中的一个新特性,设置该APP的备份,属性值应该是一个完整的类名,如com.project.TestCase,此属性并没有默认值,并且类名必须得指定(就是个备份工具,将数据备份到云端的操作)

 

D、android:

debuggable

这个从字面上就可以看出是什么作用的,当设置为true时,表明该APP在手机上可以被调试。

默认为false,在false的情况下调试该APP,就会报以下错误:

DeviceXXXrequiresthatapplicationsexplicitelydeclarethemselvesasdebuggableintheirmanifest.

 ApplicationXXXdoesnothavetheattribute'debuggable'settoTRUEinitsmanifestandcannotbedebugged.

 

E、android:

description/android:

label

此两个属性都是为许可提供的,均为字符串资源,当用户去看许可列表(android:

label)或者某个许可的详细信息(android:

description)时,这些字符串资源就可以显示给用户。

label应当尽量简短,之需要告知用户该许可是在保护什么功能就行。

而description可以用于具体描述获取该许可的程序可以做哪些事情,实际上让用户可以知道如果他们同意程序获取该权限的话,该程序可以做什么。

我们通常用两句话来描述许可,第一句描述该许可,第二句警告用户如果批准该权限会可能有什么不好的事情发生

 

F、android:

enabled

Android系统是否能够实例化该应用程序的组件,如果为true,每个组件的enabled属性决定那个组件是否可以被 enabled。

如果为false,它覆盖组件指定的值;所有组件都是disabled。

 

G、android:

hasCode('true'or'false')

表示此APP是否包含任何的代码,默认为true,若为false,则系统在运行组件时,不会去尝试加载任何的APP代码

一个应用程序自身不会含有任何的代码,除非内置组件类,比如Activity类,此类使用了AliasActivity类,当然这是个罕见的现象

(在Android2.3可以用标准C来开发应用程序,可在androidManifest.xml中将此属性设置为false,因为这个APP本身已经不含有任何的JAVA代码了)

H、android:

icon

这个很简单,就是声明整个APP的图标,图片一般都放在drawable文件夹下

I、android:

killAfterRestore

J、android:

manageSpaceActivity

K、android:

name

为应用程序所实现的Application子类的全名。

当应用程序进程开始时,该类在所有应用程序组件之前被实例化。

若该类(比方androidMain类)是在声明的package下,则可以直接声明android:

name="androidMain",但此类是在package下面的子包的话,就必须声明为全路径或android:

name="package名称.子包名成.androidMain"

L、android:

permission

设置许可名,这个属性若在上定义的话,是一个给应用程序的所有组件设置许可的便捷方式,当然它是被各组件设置的许可名所覆盖的

M、android:

presistent

该应用程序是否应该在任何时候都保持运行状态,默认为false。

因为应用程序通常不应该设置本标识,持续模式仅仅应该设置给某些系统应用程序才是有意义的。

N、android:

process

应用程序运行的进程名,它的默认值为元素里设置的包名,当然每个组件都可以通过设置该属性来覆盖默认值。

如果你想两个应用程序共用一个进程的话,你可以设置他们的android:

process相同,但前提条件是他们共享一个用户ID及被赋予了相同证书的时候

O、android:

restoreAnyVersion

同样也是android2.2的一个新特性,用来表明应用是否准备尝试恢复所有的备份,甚至该备份是比当前设备上更要新的版本,默认是false

P、android:

taskAffinity

拥有相同的affinity的Activity理论上属于相同的Task,应用程序默认的affinity的名字是元素中设定的package名

 

Q、android:

theme

是一个资源的风格,它定义了一个默认的主题风格给所有的activity,当然也可以在自己的theme里面去设置它,有点类似style。

allowTaskReparenting=["true"|"false"]

   android:

backupAgent="string"

   android:

debuggable=["true"|"false"]

   android:

description="stringresource"

   android:

enabled=["true"|"false"]

   android:

hasCode=["true"|"false"]

   android:

hardwareAccelerated=["true"|"false"]

   android:

icon="drawableresource"

   android:

killAfterRestore=["true"|"false"]

   

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1