l文件的理解

更新时间:2023-05-16 23:34:04 阅读: 评论:0

⼀,重要性
因此,该⽂件提供了Android系统所需要的关于该应⽤程序的必要信息,即在该应⽤程序的任何代码运⾏之前系统所必须拥有的信息。⼀个典型的Android应⽤程序的结构如下图所⽰:
AndroidManifest
⼆,主要功能
它指定了该应⽤程序的Java包:该包名作为应⽤程序的⼀个独特标识。
它描述了应⽤程序组件:该应⽤程序由哪些activity,rvice,broadcast receiver和content provider组成。它指定了实现每个组件的类以及公开发布它们的能⼒(例如,它们能持有哪个Intent信息)。这些声明使Android系统知道这 ⼉有什么组件以及在什么条件下它们可以被载⼊。
它决定那些进程将容纳应⽤程序组件。
它声明了本应⽤程序必须拥有哪些许可,以便访问API的被保护部分,以及与其他应⽤程序交互。
它也声明了其他应⽤程序在和该应⽤程序交互时需要持有的许可。
它列出了Instrumentation类,可以在应⽤程序运⾏时提供简档和其他信息。这些声明仅当应⽤程序在开发和测试过程中被提供;它们将在应⽤程序正式发布之前被移除。
它声明了该应⽤程序所需的Android API的最⼩化⽔平。
它列出了该应⽤程序必须链接的库。
三,主要结构及规则
下⾯列表显⽰了manifest⽂件的通常的结构以及它可以含有的元素。每个元素,连同它的所有属性,会在各个单独的⽂档⾥进⾏充分的描绘。
<?xml version="1.0" encoding="utf-8"?>
<manifest>  //根节点,描述了package中所有的内容八月英语
<us-permission /> //请求你的package正常运作所需赋予的安全许可。⼀个manifest能包含零个或更多此元素
<permission />  //声明了安全许可来限制哪些程序能使⽤你的package中的组件和功能。⼀个manifest能包含零个或更多此元素
<permission-tree />
<permission-group />
<instrumentation />  //声明了⽤来测试此package或其他package指令组件的代码。⼀个manifest能包含零个或更多此元素
<us-sdk />  //指定当前应⽤程序兼容的最低sdk版本号
<application>  //包含package中application级别组件声明的根节点。此元素也可包含application中全局和默认的属性,如标
签,icon,主 题,必要的权限,等等。⼀个manifest能包含零个或⼀个此元素(不允许多余⼀个)
<activity>  //⽤来与⽤户交互的主要⼯具。当⽤户打开⼀个应⽤程序的初始页⾯时⼀个activity,⼤部分被使⽤到的其他页⾯也由不同的activity所实现并声明在另外的activity标记中。
<intent-filter>  //声明了指定的⼀组组件⽀持的Intent值
<action />
<category />
<data />
<type/>
<schema/>
<authority/>
<path/>
</intent-filter>
<meta-data />
</activity>
<activity-alias>
<intent-filter> . . . </intent-filter>
ipu
<meta-data />
</activity-alias>
<rvice>  //Service是能在后台运⾏任意时间的组件
<intent-filter> . . . </intent-filter>
<meta-data/>
</rvice>
<receiver>  //IntentReceiver能使你的application获得数据的改变或者发⽣的操作,即使它当前不在运⾏
<intent-filter> . . . </intent-filter>
<meta-data />
</receiver>
<provider>  //ContentProvider是⽤来管理持久化数据并发布给其他应⽤程序使⽤的组件
<grant-uri-permission />
<meta-data />
</provider>
<us-library />
<us-configuration />
</application>
</manifest>
下⾯是按照字母顺序排列的所有可以出现在manifest⽂件⾥的元素。它们是唯⼀合法的元素;你不能加⼊你⾃⼰的元素或属性。
<action>
<activity>
<activity-alias>
<application>
<category>
brighton
<data>
王长喜英语<grant-uri-permission>
<instrumentation>
<intent-filter>
<manifest>
<meta-data>
<permission>
<permission-group>
<permission-tree>
<provider>
<receiver>
<rvice>
<us-configuration>
<us-library>
<us-permission>
<us-sdk>
说明:l⽂件的结构、元素,以及元素的属性,可以在Android SDK⽂档中查看详
细说明。⽽在看这些众多的元素以及元素的属性前,需要先了解⼀下这些元素在命名、结构等⽅⾯的规则:
元素:在所有的元素中只有<manifest>和<application>是必需的,且只能出现⼀次。如果⼀个元素包含有其他⼦元素,必须通过⼦元素的属性来设置其值。处于同⼀层次的元素,这些元素的说明是没有顺序的。
属性:按照常理,所有的属性都是可选的,但是有些属性是必须设置的。那些真正可选的属性,即使不存在,其也有默认的数值项说明。除了根元素<manifest>的属性,所有其他元素属性的名字都是以android:前缀的;
定义类名:所有的元素名都对应其在SDK中的类名,如果你⾃⼰定义类名,必须包含类的数据包名,如果类与application处于同⼀数据包中,可以直接简写为“.”;
多数值项:如果某个元素有超过⼀个数值,这个元素必须通过重复的⽅式来说明其某个属性具有多个数值项,且不能将多个数值项⼀次性说明在⼀个属性中;
资源项说明:当需要引⽤某个资源时,其采⽤如下格式:@[package:]type:name。例如 <activity android:icon=”@drawable/icon ” . . . >
字符串值:类似于其他语⾔,如果字符中包含有字符“\”,则必须使⽤转义字符“\\”;
四,详细说明
值得⼀提⼀些常⽤之处:
1,⼏乎所有的l(以及许多其他Android的xml的⽂件)在第⼀个元 素中包含了命名空间的声明
xmlns:android="/apk/res/android"。这 样使得Android中各种标准属性能在⽂件中使⽤,提供了⼤部分元素中的数据。
2,⼤部分manifests包含了单个<application>的元素,它定义了所有的application级别组件和属性,并能在package中使⽤。
3, 任何被⽤户看作顶层应⽤程序,并能被程序启动器所⽤的package,需要包含⾄少⼀个Activity组件来⽀持MAIN操作和LAUNCHER种类。 动作android.intent.action.MAIN指⽰这是应⽤程序的⼊⼝点。类别 android.intent.category.LAUNCHER将此Activity放在启动器窗⼝中。
在最外层的<manifest>中包含了包名如 package="cn.androidlover.demo" 、软件的版本号 android:versionCode="1" 以及
android:versionName="1.0"的属性,⽽⾥⾯⼀层的<application>分⽀中将可能包含Android程序的 四种对象 Activity、Service、Content Provider以及Receiver。我们每添加上⾯四个类型中的任⼀种新对象都需要在l⽂件中添加相应节点,否 则运⾏时将会产⽣异常。每⼀个activity必须要⼀个<activity>标记对应,⽆论它给外部使⽤或是只⽤于⾃⼰的package 中。如果⼀个activity 没有对应的标记,你将不能运⾏它。
此⽂件⼀个重要的地⽅就是它所包含的intent-filters。这些filters描述了activity启动的位置和时间。每当⼀个 activity(或者操作系统)要执⾏⼀个操作,例如:打开⽹页或联系簿时,它创建出⼀个intent的对象。它能承载⼀些信息描述了你想做什么,你想 处理什么数据,数据的类型,和⼀些其他信息。Android⽐较了intent对象中和每个application所暴露的intent-filter中 的信息,来找到最合适的activity来处理调⽤者所指定的数据和操作。关于intent的更多信息请访问Intent参考页⾯。
application属性介绍:
可爱用英语怎么说
有关l⽂件的application分⽀我们有必要了解⼀些常见的属性,这⾥可以看到⼀些我们实⽤的选项,⽐ 如允许调试android:debuggable、任务关系android:taskAffinity,⽐如我们常见的⽅式创建⼀个新的任务实⽤标记
FLAG_ACTIVITY_NEW_TASK,为程序制定⼀个主题,可以使⽤android:theme指向⼀个主题⽂件。
平时我们创建的程序使⽤⼀些 安全敏感项,会需要请求系统许可权限,这⾥可以使⽤android:permission来制定相关的许可,每个程序的rvice、 activity、content provider、receiver都需要在application的节点内实现。有关完整的属性可以查看:
1 <application android:allowClearUrData=["true" | "fal"]
2              android:allowTaskReparenting=["true" | "fal"]
3              android:debuggable=["true" | "fal"]
4              android:description="string resource"
5              android:enabled=["true" | "fal"]
6              android:hasCode=["true" | "fal"]
7              android:icon="drawable resource"
8              android:label="string resource"
9              android:manageSpaceActivity="string"
10              android:name="string"
11              android:permission="string"
12              android:persistent=["true" | "fal"]
13              android:process="string"
14              android:taskAffinity="string"
15              android:theme="resource or theme" >
16    . . .
17 </application>
另外:Activity的属性常⽤的可能为android:name和android:label两个,但我们需要了解所有的属性以帮助解决复杂的问题,完整的如下: android:allowTaskReparenting=["true" | "fal"]
android:alwaysRetainTaskState=["true" | "fal"]
android:clearTaskOnLaunch=["true"" | "fal"]
android:configChanges=[one or more of: "mcc" "mnc" "locale" "touchscreen" "keyboard" "keyboardHidden" "navigation"
"orientation" "fontScale"]
android:enabled=["true" | "fal"]
android:excludeFromRecents=["true" | "fal"]
android:exported=["true" | "fal"]
android:finishOnTaskLaunch=["true" | "fal"]
android:icon="drawable resource"
android:label="string resource"
android:launchMode=["multiple" | "singleTop" | "singleTask" | "singleInstance"]
android:multiprocess=["true" | "fal"]
android:name="string"
android:noHistory=["true" | "fal"]
android:permission="string"
android:process="string"
android:screenOrientation=["unspecified" | "ur" | "behind" | "landscape" | "portrait" | "nsor" | "nonnsor"]
武汉新东方考研android:stateNotNeeded=["true" | "fal"]
android:taskAffinity="string"
android:theme="resource or theme"
android:windowSoftInputMode=[one or more of: "stateUnspecified" "stateUnchanged" "stateHidden"
"stateAlwaysHidden" "stateVisible" "stateAlwaysVisible" "adjustUnspecified" "adjustResize" "adjustPan"]
从Provider节点中⽤到的定义,可以看到包含了权限控制、排序⽅式完整的如下:
海地是哪个国家
1 <provider android:authorities="list"
2          android:enabled=["true" | "fal"]
3          android:exported=["true" | "fal"]
4          android:grantUriPermissions=["true" | "fal"]
5          android:icon="drawable resource"
6          android:initOrder="integer"
7          android:label="string resource"
8          android:multiprocess=["true" | "fal"]
9          android:name="string"
10          android:permission="string"
11          android:process="string"
12          android:readPermission="string"
reply过去式
13          android:syncable=["true" | "fal"]
14          android:writePermission="string" >
15 </provider>
⽽对于服务相关定义如下:
1 <rvice android:enabled=["true" | "fal"]
2          android:exported[="true" | "fal"]
3          android:icon="drawable resource"
4          android:label="string resource"
5          android:name="string"
6          android:permission="string"
7          android:process="string" >
8 </rvice>
最后是Broadcast使⽤的Receiver定义,⼀般配合和隐式处理。
1 <receiver android:enabled=["true" | "fal"]
rocketeer2          android:exported=["true" | "fal"]
3          android:icon="drawable resource"
4          android:label="string resource"
5          android:name="string"
6          android:permission="string"
7          android:process="string" >
8 </receiver>
复杂的 英文总之,l⽂件虽然看起来复杂,但是,只要我们理清中⾥⾯各元素的作⽤,那么⼀切就变得简单了。

本文发布于:2023-05-16 23:34:04,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/111233.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:l最全详解
标签:程序   元素   属性   组件   数据   包含   信息
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图