Android 程序的主要组成部分 和 Manifest 文件

Android由松耦合的组件组成,并使用Manifest 绑定在一起;Manifest描述了每个组件和他们之间的交互关系,还用于应用程序的元数据、其硬件和平台的要求、外部库以及必需的权限。

以下几个组件提供了应用程序的基本结构模块:

Activity : 主要用于跟用户交互,显示界面,是android程序的表示层

Service :Android的幕后工作者,不可见,不能交互,可以更新数据源和Activity,触发通知和广播Intent。

Content Provider :顾名思义,内容提供者,就是向别的应用程序提供数据的。用来管理和持久化应用程序数据,通常会与SQL数据交互。

Intent :强大到无法想象的牛逼人物,Android 几乎无时无刻不在应用它,他是一个强大的应用程序间的消息传递框架。他可以用来启动停止Activity和Service,在系统范围内活想目标Activity。Service或BroadcastReceiver 广播消息,以及请求对特定的一条数据执行操作。

BroadCast Receiver :Intent 监听器。BroadCast Receiver使应用程序可以监听到那些匹配指定的过滤的Intent广播。BroadCast Receiver会自动启动应用程序来响应某个收到的Intent,这个特点使他们成为了事件驱动的应用程序的最佳选择。

Widget :通常添加到设备主屏幕的可视化应用程序组件。Widget是BroadCast Receiver的特殊变体,可用于创建动态的交互式应用程序控件。用户可以把这些组件添加主屏幕上。

Manifest 简介

每个Android项目都包含一个Manifest文件------Android Manifest.xml ,它存储在项目层次的最底部。Manifest文件可以定义应用程序及其组建和需求的结构和元数据。

它包含了组成应用程序的米一个Activity,Service,Content Provider 和 Broadcast Receiver的节点。并使用Intent Filter 和 权限来确定这些组件之间以及这些组件和其他应用程序的是如何交互的。

Manifest 文件还可以指定应用程序的元数据(如它的图标,版本号或主题)以及额外的顶层节点,这写节点可用来指定必需的安全权限和单元测试,以及定义硬件、屏幕和平台支持。

Manifest文件由一个跟manifest标签组成,该标签带有一个被设为项目名包的package属性。它通常包含一个xmlns:android 属性 来提供文件内使用的某些系统属性。

下面介绍几个Manifest几个节点和属性:

在<manifest>根节点下的几个属性

versionCode:将当前的应用程序版本定义为一个整数。每次版本迭代式,这个数字都会增加。

versionName:可定义一个显示给用户的公共版本号。

installLocation:指定程序安装的优先的位置。属性值:internalOnly(仅安装在内部存储器上)。 preferExternal (只要有可能就安装到外部存储卡上) 。  auto (要求系统稳定,然后选择安装位置)

在manifest节点下的子节点标签:

1.uses-sdk :用于定义要想正确安装,必须指定最高版本(maxSDKVersion)、最低版本(minSDKVersion)和程序设计的目标版本(targetSDKVersion)。

2.Uses-configuation:指定应用程序支持的每个输入机制的组合,一般不需要包含这个节点,对于需要特殊输入控制的游戏来说,他很有用,可以指定以下输入设备的任意组合:

android:reqTouchScreen :选择notouch,stylus,finger 或者undefined之一,以指定必须的触摸屏输入。

android:reqKeyboardType :将键盘类型指定为nokeys、qwerty、twelevekey 或 undefined,中的一种。

android:reqHardKeyboard :如果应用程序需要硬件键盘,设为true

android:reqNavigation :指定为nonav、dapad、trackball、wheel或undefined之一,作为必须的导航设备。

android:reqFiveWayNav : 如果要求输入设备能够向上,向下,向左和向右导航,并且能够单机当前的选项,那么需要设为true.这包括跟踪球和D-pad

3.uses-feature: 指定应用程序需要的每个硬件功能。可以避免将应用程序安装到不包含必要的硬件功能的设备上。

以nfc为例:

<uses-feature android:name="android.hardware.nfc"/>

4.具体完整的硬件列表请看http://developer.android.com/guide/topics/manifest/uses-feature-element.html

5.supports-screens 用于指定程序针对哪些屏幕进行设计和测试。当程序支持某个设备的屏幕是,一般会使用开发人员提供的布局文件中的缩放属性来布局。当在不支持的设备上运行时,系统可能会应用“兼容模式”来显示应用程序,例如像素缩放,创建可扩展的布局来适应所有的屏幕尺寸是一种最佳实践。

其中的属性有

<supports-screens

android:smallScreens="true"

分辨率比传统的HVGA小的屏幕,通常为QVGA屏幕

android:normalScreens="true"

指定典型的手机屏幕,至少是HVGA ,包括 WVGA和 WQVGA

android:largeScreens="true"

比普通屏幕大的屏幕,在这里认为大屏幕比手机的显示屏大很多

android:xlargeScreens="true"

比普通的大屏幕更大的屏幕,通常是平板电脑屏幕的屏幕

 

在Honeycomb MR2(API level 13)引入额外的属性,更细致的控制程序布局可以支持屏幕的尺寸。如果程序要支持运行着API level 13以前的平台版版本的设备,一边来说最是把这些额外的属性与早期的属性结合使用

 

android:requiresSmallestWidthDp="480"

允许用设备无关的像素指定支持的最小屏幕宽度(值屏幕高度与宽度中较小的一个),这个属性用来在Google Play Store上过滤不知他们的屏幕的应用程序,so 使用时应指定为提供可以接受的用户体验。布局所需的最小绝对像素数。

android:compatibleWidthLimitDp="600"

指定一个上限,超出此值后应用程序可能无扩展。使用该属性可以使系统在屏幕分辨率大于你指定的值的设备上启动兼容模式。

android:largestWidthLimitDp="720"

指定一个绝度上限,超出这个上限后,程序将无法掐当的扩展。通常,在屏幕分辨率大于你指定的值的设备上,这会导致系统强制应用程序在兼容模式下运行(而用户无法禁用此模式)

强制应用程序进入兼容模式  被认为是一种糟糕的用户体验,只要可能,就应该让布局能够恰当的扩展,从而在更大的设备上也可以使用。

/>

6.support-gl-texture:用于声明程序能够一种特定的GL纹理格式压缩的文理资源。如果程序能够支持多种纹理压缩格式,就必须使用多个support-gl-texture元素。如要了解更多,可以看http://developer.android.com/guide/topics/manifest/supports-gl-texture-element.html

7.Uses-permission  作为安全模型一部分,它声明了应用程序的需要。安装程序时,设定的权限会全部告诉用户,由他们来决定同意与否,对很多API是必须声明权限,特别是付费和安全问题的服务。

例如:<uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/>

8.permission: 应用程序组件可以创建权限来限制对共享应用程序的访问。可定制权限,也可以用系统现有的。

9.instrument: instrument 类提供的一个测试框架,用来在测试应用程序运行时测试应用程序组件。

10.application:  Manifest只能包含一个application节点。它使用各种属性来指定应用程序的各个元数据(包含图标,标题,主题等),一般会在开发时设置一个为true的debugable属性来启动测试,但在发布时应该禁用该属性。

11.uses-library :用于指定该应用程序需要的共享库。例如,地图API被打包为一个独立的库,它不是自动的链接。可以指定一个包是必需的还是可选的。指定必需时,在缺少指定的设备上无法安装应用程序;指定为可选时,应用程序在使用库前,必需使用反射机制检查该库是否存在。

Example: <uses-library android:name="com.google.android.maps"                           android:required="false"/>

时间: 2024-08-07 18:58:00

Android 程序的主要组成部分 和 Manifest 文件的相关文章

为什么很多 Android 程序喜欢在存储卡根目录建文件夹来存储数据而不是 Android/data 目录下?

知乎回答. http://www.zhihu.com/question/19866689 pansz,欢迎评论 知乎用户.弓长.知乎用户 赞同 这个道理很简单:因为没人管啊.你乱存放文件,在appstore直接就审核不过了.但是 android 给开发者太多自由.——虽然有时候太多自由比没有自由可能更糟糕. 编辑于 2011-09-30 添加评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利 0赞同反对,不会显示你的姓名 杨凯祥,Android开发者.iOS越狱开发者 方便人找到啊

windows下PHP批量生成打包android程序APK-渠道txt植入apk文件

服务器安装php环境 下载 android-sdk-windows  下载JDK 1.打开zip支持 c:/windows/php.ini ,打开 exec 2.apk 支持mime添加 .apk application/vnd.android.package-archive 3.安装javaSDK(要和android的编辑版本一致) 4.编辑IIS绑定权限(www:www) ,目录没有权限会导致生成失败 5.配置两个虚拟主机 A:down.coolaj.cn  用于下载 B:make.cook

Android manifest文件中的标签详细介绍

概要 每一个Android应用都应该包含一个manifest文件,即AndroidManifest.xml.它包含了程序运行的一些必备信息,比如: --为Java应用程序指定一个独一无二的名字. --描述程序所包括的成分,如activities, services, broadcast receivers和content providers等内容. --定义哪一个成分是主要的.比如主线程等. --声明程序正常运行所需要的权限.比如,读写SD卡等. --声明该程序的API Level,低于该API

Android 程序员必须知道的 53 个知识点

1. android 单实例运行方法 我们都知道 Android 平台没有任务管理器,而内部 App 维护者一个 Activity history stack 来实现窗口显示和销毁,对于常规从快捷方式运行来看都是 startActivity 可能会使用 FLAG_ACTIVITY_NEW_TASK 标记来打开一个新窗口,比如 Launcher,所以考虑单任务的实现方法比较简单,首先 Android123 纠正下大家一种错误的方法就是直接在androidmanifest.xml 的 applica

浅析一个Manifest文件

在Android平台的应用程序开发过程中,Manifest文件举足轻重.每一个应用程序都要有一个Manifest文件,他配置了应用程序在Android系统上的基本信息. 下面对AOSP中的一个manifest文件做个简单解析,以期了解manifest文件的大概结构. 例子取自AOSP4.4 源码中的 frameworks/base/packages/SystemUI/AndroidManifest.xml (有删减) <manifestxmlns:android="http://schem

Android应用程序Manifest文件简介

任何一个Android项目都包含一个AndroidManifest.xml文件,它存储在项目层次中的最底层.Manifest可以定义应用程序及其组件和需求的结构和元数据. 它包含了组成应用程序的每一个Activity.Service.Content Provider和Broadcast Receiver的节点,并且使用Intent Filter和权限来确定这些组件之间以及这些组件和其它应用程序是如何交互的. Manifest文件还可以指定应用程序的元数据(如它的图标.版本号或者主题)以及额外的顶

android开发学习笔记(一)-Manifest文件

一:概述 所有的app都要在根目录下AndroidManifest.xml文件,这个文件显示了app告诉android系统的基本信息.在app代码运行之前,android系统从这个文件获取基本信息 功能: 给app的java包起名作为这个app的唯一标识符 声明app中要使用的组件 决定哪些进程持有app组件 确定app需要的用户权限 它声明应用程序必须拥有哪些权限以访问API的被保护部分以及与其它应用程序交互 它声明应用程序必须拥有哪些权限以访问API的被保护部分以及与其它应用程序交互 声明a

创建应用程序和Activity之应用程序Manifest文件简介

每个Android项目都包含一个Manifest文件(Android Manifest.xml),它存储在项目层次中的最顶层.Manifest可以定义应用程序及其组件和需求的结构和元数据.它包含了组成应用程序的每一个Activity,Service,Content Provider和Broadcast Receiver的节点,并使用Intent Filter和权限来确定这些组件之间以及这些组件和其他应用程序是如何交互的. Manifest文件还可以指定应用程序的元数据(如它的图标,版本号或者主题

如何解决:新建Android程序的时候发生了找不到 \android-sdk-windows\tools\lib\proguard.cfg文件 的错误

问题概述: 在新建Android程序的时候出现以下错误: 找不到 \android-sdk-windows\tools\lib\proguard.cfg文件 原因: SDK不完整. 解决方法: 方法一 可在 \android-sdk-windows\tools\lib\目录下新建一个proguard.cfg文件 然后添下以下内容: proguard.cfg -optimizationpasses 5-dontusemixedcaseclassnames-dontskipnonpubliclibr