AndroidManifest.docx
- 文档编号:27958860
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:22
- 大小:27.27KB
AndroidManifest.docx
《AndroidManifest.docx》由会员分享,可在线阅读,更多相关《AndroidManifest.docx(22页珍藏版)》请在冰豆网上搜索。
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”等。 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"/> 这两个标签都是用于描述应用所需要的硬件和软件特性,以便防止应用在没有这些特性的设备上安装。 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类库作为支持,这种情况下我们就可以使用 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等。 当然, 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的名字是 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"]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AndroidManifest