18
2.2 Android Manifest.XML 简简 Android 简简简简简简

2.2 Android Manifest.XML 简介

  • Upload
    brede

  • View
    135

  • Download
    7

Embed Size (px)

DESCRIPTION

2.2 Android Manifest.XML 简介. AndroidManifest.xml 的文件结构. 每个 Android 的 application 都必须包含一个 AndroidManifest.xml ,且文件名是固定的,不能修改。应用程序需要通过它向 Android 系统提供一些必需的信息,且需要在 application 运行前提供给系统,如下图所示:. Android Manifest.xml 的功能介绍. Android Manifest.xml 主要包含以下功能: - PowerPoint PPT Presentation

Citation preview

Page 1: 2.2 Android Manifest.XML 简介

2.2 Android Manifest.XML 简介

Android 视频教学课程

Page 2: 2.2 Android Manifest.XML 简介

AndroidManifest.xml 的文件结构• 每个 Android 的 application 都必须包含一个AndroidManifest.xml ,且文件名是固定的,不能修改。应用程序需要通过它向 Android 系统提供一些必需的信息,且需要在 application 运行前提供给系统,如下图所示:

Android 视频教学课程

Page 3: 2.2 Android Manifest.XML 简介

Android Manifest.xml 的功能介绍• Android Manifest.xml 主要包含以下功能:• 说明 application 的 java 数据包,数据包名是application 的唯一标识;

• 描述 application 的 component ; • 说明 application 的 component 运行在哪个 process 下; • 声明 application 所必须具备的权限,用以访问受保护的部分 API ,以及与其他 application 的交互; • 声明 application 其他的必备权限,用以 component 之间的交互; • 列举 application 运行时需要的环境配置信息,这些声明信息只在程序开发和测试时存在,发布前将被删除; • 声明 application 所需要的 Android API 的最低版本级别,比如 1.0 , 1.1 , 1.5 ; • 列举 application 所需要链接的库; Android 视频教学课程

Page 4: 2.2 Android Manifest.XML 简介

<?xml version="1.0" encoding="utf-8"?> <manifest>  // 根节点,描述了 package 中所有的内容 <uses-permission /> // 请求你的 package 正常运作所需赋予的安全许可。一个 manifest能包含零个或更多此元素 <permission />  // 声明了安全许可来限制哪些程序能使用你的 package 中的组件和功能。一个 manifest 能包含零个或更多此元素 <permission-tree />      <permission-group />     <instrumentation />  // 声明了用来测试此 package 或其他 package 指令组件的代码。一个 manifest 能包含零个或更多此元素 <uses-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>             <meta-data />         </activity-alias>         <service>  //Service 是能在后台运行任意时间的组件 <intent-filter> . . . </intent-filter>             <meta-data/>         </service>         <receiver>   //IntentReceiver 能使你的 application 获得数据的改变或者发生的操作,即使它当前不在运行 <intent-filter> . . . </intent-filter>             <meta-data />         </receiver>         <provider>  //ContentProvider 是用来管理持久化数据并发布给其他应用程序使用的组件 <grant-uri-permission />             <meta-data />         </provider>         <uses-library />         <uses-configuration />       </application> </manifest>

主要结构及规则

Page 5: 2.2 Android Manifest.XML 简介

语法( 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>

Manifest

Page 6: 2.2 Android Manifest.XML 简介

语法( SYNTAX ):<uses-sdkandroid:minSdkVersion="integer" android:targetSdkVersion="integer" android:maxSdkVersion="integer"/>

属性( ATTRIBUTES ):android:minSdkVersion一个整数,它指定了应用程序运行所需要的最小的 API 级别。如果

Android 系统的 API 级别被该应用程序清单中的这个属性值小,那么系统就阻止安装该应用程序,应该始终声明这个属性。android:targetSdkVersiion一个整数,它指定了应用程序要运行的目标的 API 级别。如果没有设置,它的默认值等于给定的 minSdkVersion 属性值。android:maxSdkVersion一个整数,表明该应用要运行的最大的 API Level 。

uses-sdk

Page 7: 2.2 Android Manifest.XML 简介

语法( SYNTAX ):<uses-configurationandroid: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"] />说明( DESCRIPTION ):这个属性用于指定该应用程序所需要的硬件和软件功能。例如,应用程序可以用这个元素指定它所需要的物理键盘或特殊的导航设备,如轨迹球。使用这个规范可以避免把应用程序安装在那些不支持其不能工作的设备上。

uses-configuration

Page 8: 2.2 Android Manifest.XML 简介

语法( SYNTAX ):<uses-feature android:name="string" android:required=["true" | "false"] android:glEsVersion="integer"/>说明( DESCRIPTION ):这个元素用于声明一个单独的被应用程序使用的硬件或软件功能。属性( ATTRIBUTES ):android:name这个属性用描述性的字符串,指定该应用程序所使用的软 / 硬件功能。 android:required这个属性用一个布尔值来指定应用程序是否需要在 android:name 属性中所指定的功能。android:qlEsVersion这个属性用于声明应用程序所需要的 OpenGL ES 的版本。

uses-feature

Page 9: 2.2 Android Manifest.XML 简介

语法( SYNTAX ):<supports-screens android: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"/>说明( DESCRIPTION ):这个元素用于指定应用程序所支持的屏幕尺寸,并针对比应用程序所支持的屏幕还要大屏幕,启用屏幕兼容模式。在应用程序中使用这个元素指定应用程序所支持的屏幕尺寸是至关重要的。

supports-screens

Page 10: 2.2 Android Manifest.XML 简介

语法( SYNTAX ):<supports-gl-textu reandroid:name="string"/>说明( DESCRIPTION ):这个元素用于声明一个应用程序所支持的 GL纹理压缩格式。一个应用程序支持一种纹理压缩格式,如果应用程序提供了用该格式压缩纹理资源的能力,那么一旦应用程序被安装在设备上,应用程序就能够从 .apk 文件的内部提供本地的压缩资源,或者在运行时从服务器上下载它们。每个 <supports-gl-texture> 元素用 android:name 属性明确的声明一个所支持的纹理压缩格式。如果应用程序支持多种纹理压缩格式,可以声明多个 <supports-gl-texture> 元素,例如:<supports-gl-texture

android:name="GL_OES_compressed_ETC1_RGB8_texture" />

<supports-gl-texture android:name="GL_OES_compressed_paletted _texture" />

supports-gl-texture

Page 11: 2.2 Android Manifest.XML 简介

语法( SYNTAX ):<uses-permission android:name="string"/>

说明( DESCRIPTION ):这个属性用于给应用程序授予正确的操作的所必须的权限。这些权限是在应用程序安装时被授予的,而不是在运行时授予的。属性( ATTRIBUTES ):android:name

这个属性用于定义权限的名称。它能够是由该应用程序用 <permission>元素定义的一个权限,也可以是由另外一个应用程序所定义的权限,还可以是有系统定义的标准的权限,如:android:permission.CAMERA 或android:permission.READ_CONTACTS 等。

uses-permission

Page 12: 2.2 Android Manifest.XML 简介

说明( DESCRIPTION ):定义一个用来控制其他包对本包内的组件访问的全乡对象。这将产生一个新的结构体,应用组件在使用 android :permission 时指定权限名称方可生效。属性( ATTRIBUTES ):

android:description 一个对权限的长文本描述,必须是一个字符串的引用 ;android:icon 当这个权限要在某写地方显示时,可以显示这个图标android:label 指定一个清晰易读的名字android:name 权限名称,使用权限时需要使用这个名字。android:permissionGroup 指定权限所在的组,这个组必须先建立android:protectionLevel 权限使用的级别,这是一个枚举值,使用字符串normal , dangerous , signature , signatureOrSystem

permission

Page 13: 2.2 Android Manifest.XML 简介

说明( DESCRIPTION ):应用组件的根节点,包含这个包中所有的应用组件,如果组件没有在这个节点下注册,那么系统在运行时将无法找到这个应用组件。这个节点设置的属性可以为它下面的所有子节点设立默认属性,如 icon , label , theme 等等属性( ATTRIBUTES ):android:allowClearUserData ,指定应用是否可以清除应用数据,默认是 true ,不想清除数据的话明确填写false 。

android:persistent 请求系统保持应用一直运行, bool值android:process 指定进程名,如果进程名以“:”开头,则该应用运行在一个新的单独的进程中,如果直接以小写字符开始,表示可以多个应用共用一个进程,节约资源开销。android:taskAffinity 指定一个任务名称,可以使多个应用组件作为一个任务运行。默认整个 Application 的应用都是一个任务。

application

Page 14: 2.2 Android Manifest.XML 简介

语法( SYNTAX ): <activity android:name=".HelloWorldActivity"android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category

android:name="android.intent.category.LAUNCHER" /> </intent-filter></activity>说明( DESCRIPTION ):这个标签用来描述一个 Activity类应用组件,包含其子类应用组件。它可以带有

intentFilter子节点。用来在隐式 Intent 中过滤。属性( ATTRIBUTES ):android:clearTaskOnLaunch , 对于保存在栈中的任务,当再次进入时,是否从 main Activity 开始运行。android:multiprocess 设置这个 activity 是否可以有多个实例运行在不同的进程中。android:finishOnTaskLaunch 当这个 activity 所处的任务重新开始时,指定这个 activity 是结束运行 .android:excludeFromRecents 指示这个 activity 可以放进最近运行的一个全局资源中 .android:exported 指示这个 activity 是否可以被其他用户的任务调用 . 当没有指定 intentFilter 时默认是 false, 指定了 IntentFilter, 默认是

true;

activity

Page 15: 2.2 Android Manifest.XML 简介

语法( SYNTAX ):<service android:enabled=["true" | "false"] android:exported[="true" | "false"] android:icon="drawable resource" android:label="string resource" android:name="string" android:permission="string" android:process="string"></service>service 与 activity 同级,与 activity 不同的是,它不能自己启动的,运行在后台的程序,如果我们退出应用时, Service进程并没有结束,它仍然在后台运行。比如听音乐,网络下载数据等,都是由 service 运行的service 生命周期: Service 只继承了

onCreate(),onStart(),onDestroy()三个方法,第一次启动 Service时,先后调用了 onCreate(),onStart() 这两个方法,当停止 Service 时,则执行 onDestroy()方法,如果 Service已经启动了,当我们再次启动Service 时,不会在执行 onCreate()方法,而是直接执行 onStart()方法

service 与 activity 间的通信Service 后端的数据最终还是要呈现在前端 Activity 之上的,因为启动

Service 时,系统会重新开启一个新的进程,这就涉及到不同进程间通信的问题了 (AIDL) , Activity 与 service 间的通信主要用 IBinder负责。

Service

Page 16: 2.2 Android Manifest.XML 简介

语法( SYNTAX ): <provider android:authorities="list"

           android:enabled=["true" | "false"]            android:exported=["true" | "false"]            android:grantUriPermissions=["true" | "false"]            android:icon="drawable resource"            android:initOrder="integer"            android:label="string resource"            android:multiprocess=["true" | "false"]            android:name="string"            android:permission="string"            android:process="string"            android:readPermission="string"            android:syncable=["true" | "false"]            android:writePermission="string" > </provider>说明( DESCRIPTION ):

Provider 标签用来指定应用程序中的每一个 Content Provider. Content Provider 用来管理数据库访问和共享。

Provider

Page 17: 2.2 Android Manifest.XML 简介

语法( SYNTAX ):<receiverandroid:enabled=["true" | "false"] android:exported=["true" | "false"] android:icon="drawable resource" android:label="string resource" android:name="string" android:permission="string" android:process="string"> . . .</receiver>说明( DESCRIPTION ):这个元素用于声明一个广播接收器(一个 BroadcastReceiver 子类),作为应用程序的组件之一。广播接收器能够让应用程序接收那些由系统或其他应用程序发出的广播 Intent 对象,即使是在该应用程序的其他组件没有运行的时候,也能够接收来自系统或其他应用程序的广播消息。

receiver

Page 18: 2.2 Android Manifest.XML 简介

谢谢收看!