Android学习笔记,Android应用程序的组成都部队分和Manifest文件

  在上一篇博文中回顾介绍了Manifest文件及其存放地点,本篇就来详细介绍一下Manifest文件中的节点和一部分节点的为主职能,首先看一下Manifest文件最中央的组织:

  Android应用程序由松散耦合的机件组成,并应用应用程序Manifest绑定到一块;应用程序Manifest描述了每一零部件和它们中间的交互格局,还用于钦赐应用程序元数据、其硬件和平台须求、外部库以及要求的权限。

1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2     package="com.codingblock.manifesttest"
3     android:versionCode="1"
4     android:versionName="1.0"
5     android:installLocation="preferExternal" >
6     <!-- ...nodes... -->
7 </manifest>

① 、应用程序的骨干协会模块

  manifest标签包罗了一部分节点(node),定义了咬合应用程序的应用程序组建、安全设置、测试类和供给。上面是局地manifest子节点标签:

  ·
Activity:应用程序的表示层。每一种UI都以通过Activity类的3个或四个扩展落成的。Activity使用Fragment和视图来布局和展现消息,以及响应用户动作。

  ·
uses-sdk:要想正确的运作程序,需求有minSKDVersion(暗许值:1)、maxSDKVersion和targetSDKVersion属性。

  ·
Service:应用程序中不可知的工笔者。运转时尚未UI,能够立异数据源和Activity、触发通告和广播Intent。能够用来实行1个周转时刻长的义务,也许不须要和用户交互的职务。

  ·
uses-configuration:使用此节点能够内定应用程序协助的各类输入机制的结缘。一般不要求包蕴这一个节点,可是对于须求卓殊输入控制的嬉戏说很有用。以下是它的多少个特性:

  · Content
Provider:可共享的持久数据存款和储蓄器(内容提供者)。用来治本和持久化应用程序数据,平常会与SQL数据库交互。能够透过安顿自个儿的Content
Provider来允许任何应用程序访问,也得以访问其他使用。

    ·
reqFiveWayNav:要求配备有上、下、左、右导航,并且可以单击当前的选项时为true。包蕴跟踪求和D-pad。

  ·
Intent:音讯传递框架。Android中山高校量应用了Intent、Service恐怕Broadcast
Receiver广播新闻,以及呼吁对特定的一条数据进行操作。

    · reqHarKeyboard:供给配备有硬件键盘时为true。

  · 布罗兹cast Receiver:
Intent侦听器(广播接收者)。能够监听到那个匹配钦定的过滤标准的Intent广播。它会自动地运转应用程序来响应某些接收到Intent。

    ·
reqKeyboardType:钦定键盘类型为nokeys、qwerty、twelvekey、undefined。

  · Widget:可视化应用程序组件。它是布罗兹cast
Receiver的新鲜变体,可用以创立动态的交互式应用程序组件,用户能够把那么些组件添加到他们的主显示屏上。

    ·
reqNavigation:导航设施(值:nonav、dpad、trackball、wheel或undefined)。

  ·
Notification:它同意向用户发送信号,但却不会超负荷吸引他们的注意力也许打断他们如今的Activity。它们是应用程序不可知或然不移步时引发用户注意的首要选取办法。

    ·
reqTouchScreen:以钦命必需的触摸屏输入(notouch、stylus、finger或undefined)。

② 、Manifest文件简介

  ·
uses-feature:Android能够在五花八门硬件平台上运转。能够运用三个uses-feature节点来内定应用程序须求的每一个硬件成效,防止止安装到不含有硬件功用的设备上。(如:NFC、蓝牙( Bluetooth® )、摄像头等等)

  每2个Android项目都带有四个Manifest文件——Android
Manifest.xml,它存款和储蓄在品种层次中的最尾部。Manifest能够定义用用程序及其零部件和急需的布局和元数据。

  ·
supports-screens:用于内定应用程序针对那多少个显示屏尺寸惊醒了统筹和测试。当应用程序支持有个别设备的显示屏是,一般就会采取开发人士提供的布局文件中的缩放属性来布局。在不支持的装备上运维时,系统可能会选择“兼容形式”来展现应用程序。

  Manifest包蕴了整合应用程序的每3个Activity、Service、Content
Provider和Broadcast Receiver的节点,并采纳Intent
Filter和权限来规定这几个组件和别的应用程序是怎样相互的。此文件还是能够钦命应用程序的元数据(图标、版本号、大旨等等)
以及额外的顶层节点,那么些节点能够钦赐必需的鄂州权限和单元测试,以及定义硬件、荧屏和平台扶助要求。

  ·
supports-gl-texture:用于注解应用程序能够提供以一种特定的GL纹理压缩格式压缩的纹路财富。假诺应用程序能够八种纹理压缩格式,就非得运用三个supports-gl-texture成分。

  Manifest文件有贰个根manifest标签构成,该标签包涵三个被设为项目包的package属性。它一般包蕴三个xmls:android属性来提供文件Nelly用的一些系统特性。

  · uses-permission:声明应用程序所需权限。

  使用versionCode属性可讲当前的应用版本定义为多个平头,每趟版本更新,这几个数字都会大增。使用versionName能够定义3个呈现给用户的公共版本号。

  ·
permission:应用程序组件也得以创立权限来界定对共享应用程序组件的拜访。(能够应用permission标签来创制权限定义)

  installLocation属性,是制定是还是不是同意将程序安装到SD存款和储蓄卡上,其值有preferExternal(首要选择外存)和auto(系统控制)。不钦赐时,默许按到中间存款和储蓄器中。由于取出或拒绝外存存在的题材,以下顺序不合乎安装到表面存款和储蓄器及其后果:

  ·
instrumentation:instrumentation类提供了三个测试框架,用来在应用程序运转时测试应用程序组件。

  · 具有Widget/Live 沃尔paper和Live Folder的应用程序: Widget/Live
沃尔paper和Live Folder将从主显示屏上移除,而且重启系统后可能不在可用。

  ·
application:二个Manifest只可以分包一个application节点。用于钦定应用程序的各样元数据(标题、图标和核心)。在付出时,建议将debuggable设为true,以启用调试,公布时方可禁止使用此属性。application节点包括了Activity、瑟维斯、Content
Provider和布罗兹cast
Receiver等子节点。并通过创办和是用自身的Application类扩大来管理应用程序的景况。

  ·
提供不暂停服务的应用程序:程序和它运转的劳动将被终止,并且不会活动重启。

1    <application
2         android:allowBackup="true"
3         android:icon="@drawable/ic_launcher"
4         android:label="@string/app_name"
5         android:theme="@style/AppTheme"
6         android:debuggable="true" >
7         <!-- ...nodes... -->
8     </application>

  ·
输入法引擎:安装到表面存储器的别的IME都会被剥夺。在外表存款和储蓄器再一次可用后,用户必须另行选拔IME。

  以下是对application子节点的简要介绍:

  · 设备管理器:DeviceAdminReceiver及其管理能力将被剥夺。

    ·
activity:应用程序的每3个Activity都亟待三个此节点,并采取andorid:name属性来钦赐Activity类的名称。必须带有主旨的起步Activity和任何具有可兆示的Activity。运维二个向来不概念的Activity就会抛出运营时充足。每三个activity节点都得以使用intent-filter子标签来定义用于运维该Activity的Intent。(钦点类名时,能够利用“.”作为简写格局取代应用程序的包名)如下代码:

本篇博文先大体介绍应用程序的组成都部队分和Manifest文件,下一篇博文将对Manifest展开详述。

1     <activity
2             android:name="com.codingblock.manifesttest.MainActivity"
3             android:label="@string/app_name" >
4             <intent-filter>
5                 <action android:name="android.intent.action.MAIN" />
6 
7                 <category android:name="android.intent.category.LAUNCHER" />
8             </intent-filter>
9         </activity>

http://www.cnblogs.com/codingblock/p/4746015.html

     ·
service和activity标签一样,必要为应用程中选取的每一Service类添加二个此标签。同样它也扶助使用intent-filter子标签来拓展运行时绑定。

  在上一篇博文中总结介绍了Manifest文件及其存放地方,本篇就来详细介绍一下Manifest文件中的节点和局地节点的为主职能,首先看一下Manifest文件最中央的组织:

1   <service android:name=".MyService">
2   </service>

图片 1😉

     · provider:此标签用于内定应用程序中的每一Content
Provider。(Content Provider用来保管数据库访问和共享)

1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2     package="com.codingblock.manifesttest"
3     android:versionCode="1"
4     android:versionName="1.0"
5     android:installLocation="preferExternal" >
6     <!-- ...nodes... -->
7 </manifest>
1   <provider android:name=".MyContentProvider"
2             android:authorities="com.codingblock.manifesttest.MyContentProvider">
3   </provider>

图片 2😉

      · receiver:通过添加receiver标签,能够登记1个布罗兹cast
Receiver,而不用事先运维应用程序。一旦注册领会后,无论几时,只要与它相匹配的Intent被系统或应用程序广播出来,它就会立刻施行。通过在manifest中注册1个布罗兹cast
Receiver,能够使那些历程达成完全自治。如若3个郎才女貌的Intent被广播了,则应用程序就会活动运营,并且你注册的布罗兹cast
Receiver也会开头实践。每三个receiver节点都允许行使intent-filter子标签来定义能够用来触发接收器的Intent:

  manifest标签包涵了部分节点(node),定义了组合应用程序的应用程序组建、安全设置、测试类和须要。下边是一些manifest子节点标签:

1   <receiver android:name=".MyIntentReceiver">
2             <intent-filter>
3                 <action android:name="com.codingblock.manifesttest.MyIntentReceiver"/>
4             </intent-filter>
5     </receiver>

  ·
uses-sdk:要想正确的运作程序,须要有minSKDVersion(暗中认可值:1)、maxSDKVersion和targetSDKVersion属性。

     · uses-library:用于钦命该应用程序须要的共享库。

  ·
uses-configuration:使用此节点可以钦定应用程序帮忙的各种输入机制的咬合。一般不供给包涵那些节点,可是对此供给相当输入控制的玩乐说很有用。以下是它的多少个本性:

    ·
reqFiveWayNav:须要配备有上、下、左、右导航,并且能够单击当前的选项时为true。包括跟踪求和D-pad。

    · reqHarKeyboard:供给配备有硬件键盘时为true。

    ·
reqKeyboardType:钦点键盘类型为nokeys、qwerty、twelvekey、undefined。

    ·
reqNavigation:导航设施(值:nonav、dpad、trackball、wheel或undefined)。

    ·
reqTouchScreen:以内定必需的触摸屏输入(notouch、stylus、finger或undefined)。

  ·
uses-feature:Android能够在丰盛多彩硬件平台上运营。能够运用三个uses-feature节点来钦定应用程序供给的每一个硬件成效,避防止安装到不含有硬件功能的装备上。(如:NFC、蓝牙5.0、摄像头等等)

  ·
supports-screens:用于钦点应用程序针对那个屏幕尺寸惊醒了设计和测试。当应用程序援助某些设备的显示器是,一般就会接纳开发职员提供的布局文件中的缩放属性来布局。在不支持的设施上运转时,系统可能会使用“包容格局”来显示应用程序。

  ·
supports-gl-texture:用于注明应用程序能够提供以一种特定的GL纹理压缩格式压缩的纹理能源。假如应用程序能够四种纹理压缩格式,就亟须采用八个supports-gl-texture成分。

  · uses-permission:注解应用程序所需权限。

  ·
permission:应用程序组件也能够制造权限来界定对共享应用程序组件的造访。(能够动用permission标签来创制权限定义)

  ·
instrumentation:instrumentation类提供了七个测试框架,用来在应用程序运行时测试应用程序组件。

  ·
application:3个Manifest只好分包三个application节点。用于钦点应用程序的种种元数据(标题、图标和核心)。在付出时,提议将debuggable设为true,以启用调节和测试,揭橥时方可禁用此属性。application节点包蕴了Activity、瑟维斯、Content
Provider和布罗兹cast
Receiver等子节点。并因此创办和是用本人的Application类扩张来管理应用程序的图景。

图片 3😉

1    <application
2         android:allowBackup="true"
3         android:icon="@drawable/ic_launcher"
4         android:label="@string/app_name"
5         android:theme="@style/AppTheme"
6         android:debuggable="true" >
7         <!-- ...nodes... -->
8     </application>

图片 4😉

  以下是对application子节点的大约介绍:

    ·
activity:应用程序的每二个Activity都要求七个此节点,并行使andorid:name属性来钦命Activity类的称呼。必须带有核心的启航Activity和别的兼具可兆示的Activity。运营二个并未定义的Activity就会抛出运转时尤其。每一个activity节点都足以利用intent-filter子标签来定义用于运营该Activity的Intent。(钦点类名时,能够运用“.”作为简写格局取代应用程序的包名)如下代码:

图片 5😉

1     <activity
2             android:name="com.codingblock.manifesttest.MainActivity"
3             android:label="@string/app_name" >
4             <intent-filter>
5                 <action android:name="android.intent.action.MAIN" />
6 
7                 <category android:name="android.intent.category.LAUNCHER" />
8             </intent-filter>
9         </activity>

图片 6😉

     ·
service和activity标签一样,供给为应用程中运用的每一Service类添加一个此标签。同样它也支撑采纳intent-filter子标签来进展运转时绑定。

1   <service android:name=".MyService">
2   </service>

     · provider:此标签用于钦赐应用程序中的每一Content
Provider。(Content Provider用来管理数据库访问和共享)

1   <provider android:name=".MyContentProvider"
2             android:authorities="com.codingblock.manifesttest.MyContentProvider">
3   </provider>

      · receiver:通过添加receiver标签,能够注册1个布罗兹cast
Receiver,而不用事先运转应用程序。一旦注册了之后,无论哪一天,只要与它相匹配的Intent被系统或应用程序广播出来,它就会立马实施。通过在manifest中登记贰个布罗兹cast
Receiver,能够使这一个进度达成完全自治。假诺四个卓殊的Intent被广播了,则应用程序就会自行运营,并且你注册的布罗兹cast
Receiver也会开端履行。每1个receiver节点都同意利用intent-filter子标签来定义可以用来触发接收器的Intent:

1   <receiver android:name=".MyIntentReceiver">
2             <intent-filter>
3                 <action android:name="com.codingblock.manifesttest.MyIntentReceiver"/>
4             </intent-filter>
5     </receiver> 

     · uses-library:用于内定该应用程序需求的共享库。

http://www.cnblogs.com/codingblock/p/4750803.html