`
luckliu521
  • 浏览: 258991 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

The AndroidManifest.xml File

阅读更多
The AndroidManifest.xml File

one.add.one 发短消息加为好友one.add.one 当前离线 注册时间2011-5-9 最后登录2011-6-23 阅读权限30 积分413 精华0 帖子136 .

中级会员



中级会员, 积分 413, 距离下一级还需 87 积分  楼主
快速分享:发表于 2011-6-7 12:45 |只看该作者 |倒序浏览 |打印 【The Manifest File】
  在Android系统能够启动一个应用程序组件之前,系统必须通过阅读应用程序AndroidManifest.xml文件来知道组件的存在。你的应用程序必须声明它所有的组件在这个文件中,必须放在应用程序项目根目录。
  Manifest文件做一系列事情包括声明应用程序组件,例如:
  1、认证任何应用程序请求的用户权限,例如网络访问或者读用户联系人的权限。
  2、声明应用程序所需要的最小的API级别。
  3、声明该应用程序使用的硬件或软件的特点,例如摄像头、蓝牙或多等触摸。
  4、需要链接的API库,例如Google Maps Library。
  5、其它
【Declareing components】
  Manifest的主要的任务是通知系统关于应用程序的组件信息。例如,一个manifest文件可以声明一个activity像下面这样:
  
  在<application>元素中,android:icon属性指定一个用来标识应用程序的图标。
  在<activity>元素中,android:name属性指明了Activity子类的全称,android:label属性指定一个字符串作为用户可见的activity标签。
  你必须像下面一样声明所有的应用程序组件:
  1、<activity>元素声明activities
  2、<service>元素声明services
  3、<receiver>元素声明broadcast receivers
  4、<provider>元素声明content provider
  你代码中无声明的Activities、services、和content providers对系统是不可见的,并且相反地,永远都无法运行。可是,broadcast receivers可以被声明在manifest中或者用代码动态(就像BroadcastReceiver对象)并且注册进系统通过registerReceiver()。
【Declaring component capabilities】
  就像上面讨论的,在activiting组件,你可以使用Intent来启动activities、service、和broadcast receiver。你可以通过显示地命名目标组件(使用组件类名)在intent中。然而,intent的真下能力在于intent actions的概念。在intent actions,你简单的描述你想要执行的动作类型(或者是你希望实现操作的数据)并且允许系统找一个设备上的组件来实现action并且启动它。如果有多个组件能完成那个intent描述的动作,那么由用户选择哪一个来用。(PS:像windows注册表和扩展名的概念)
  系统辨别哪个组件能响应一个intent通过比较intent filters,被设备上的其它应用程序的manifest文件提供。
  当你在应用程序manifest中声明一个组件时,你可选的可以包含intent filters,用来声明你组件的能力,以致它可以响应来自其它应用程序的intent。你可声明一个intent filter给你的组件通过添加<intent-filter>元素作为组件声明元素的子元素。
  例如,一个邮件应用程序有一个activity用来组建一个新邮件,或者会声明一个intent filter在它的manifest入口点来响应"发送"intents(为了发送邮件)。那一个Activity在你应用程序里可以创建一个intent带上“发送”动作(ACTION_SEND),系统匹配邮件应用程序的“发送”activity,然后用startActivity()启动它。
【Declaring application requirements】
  有各种各样的设备被Android管理,并不是他们中的所有都提供相同的特点和能力。为了防止你的应用程序安装在缺少设备环境的机器上,所以清晰的定义一个你的应用需要的设备和软件要求在你的manifest中显得非常重要。它们中大多数只是传达信息,系统不会阅读它们,但是外部services例如Android Market会阅读他们目的是给用记提供过滤当他们搜索应用程序在他们的机器上时。  
  例如,如果你的应用程序要求一个摄像头然后使用2.1的API(Level 7),你应该声明 这些作为要求在你的manifest文件里。这样的话,没有摄像头的和Android version小于2.1的机器就不能安装Android Market。
  可是,你也可以声明你的应用程序使用摄像头,但并不一定要求。在这种情况下,你的应用程序在运行时会检查以决定是不否这个设备有一个摄像头并且关闭所有使用使用摄像头的功能在没有摄像头的情况下。
  下面是一些重要的设备特性你应该考虑的在你设计和开发你的应用程序的时候。
  1、Screen size and density
    为了分类设备的屏幕类型,Android为每种设备定义了两种属性:屏幕大小(屏幕物理尺寸)和屏幕分辨率(屏幕物理像素密度或每英寸DPI-DOT)。为了简化各种类型屏幕的配置,Android系统把他们生来可选择的组让他们更容易被定位。
    屏幕大小是:small, normal, large 和extra larege.
    屏幕分辨率是:low density, medium density, hidensity 和extra hight density
    默认,你的应用程序兼容所有的屏幕大小和分辨率,因为android系统生成全适的调整对你的UI布局和图像资源。可是,你应该建立独特的布局为某一种特定的屏幕大小并且提供特定的图片为特定的密度,使用可选的布局和资源,并且声明在你的manifest文件中哪个屏幕大小你的应用程序支持通过<support-screens>元素。
  2、Input configurations
    很多设备提供不同类型的输入机制,例如硬件键盘,跟踪球,或者是five-way浏览器。如果你的应用程序要求一个特别各类的输入硬件,那么你应该声明它在你的manifest文件中通过<uses-configuration>元素。可是,极少数情况下一个应用程序应该声明某种输入配置。
  3、Device features
    会有很多的硬件和软件特性可能存在或不存在在一个给定的android设备上,例如摄像头、光感器、蓝牙、某种版本的OpenGL、或者是触摸屏的精确性。你应该永远不假设某种特性在Android设备上具有(不是说标准Android库),所以你应该声明任何特点你应用程序会使用到的通过<uses-feature>元素。
  4、Platform Version
    不同的Android设备通常运行不同版本的Android平台,例如Android1.6或Android 2..每个连续的版本通常包含不存在于版本的额外的APIs。为了指定哪个API集合是可用的,每个平台版本指定一个API Level(例如,Android 1.0 是API Level 1并且Android 2.3是 API Level 9)。如果你使用任何1.0版本以后的API,你应该声明最小的API Level使用<uses-sdk>元素。
  你声明所有的要求为你的应用程序非常重要,因为,当你发布你的应用程序在Android Market时,Market使用这些声明来过滤哪些程序在各个设备上是可用的。这校报话,你的应用程序将出现在符合你所有要求的设备上。



分享到:
评论

相关推荐

    纯java读取Apk信息,贡献全源码,可读取程序.apk中的AndroidManifest.xml所有信息

    在Android开发中,有时我们需要获取APK文件的详细信息,如应用名、版本号、权限等,这通常涉及对APK文件内部的AndroidManifest.xml文件进行解析。本篇将详细介绍如何仅使用Java代码,不依赖任何外部工具(如aapt)来...

    ApkIDE3.3.0.0作者原版,解决常见apk打包安装问题.rar

    adb: failed to install SystemActivities.apk: Failure [INSTALL_FAILED_OLDER_SDK: Failed parse during installPackageLI: /data/app/vmdl1716187195.tmp/base.apk (at Binary XML file line #0): Requires newer...

    PHP 读取 Android APK XML文件,无需JDK

    if ($zip-&gt;open('path/to/apkfile.apk') === true) { // 打开成功 } else { // 打开失败 } ``` 2. **搜索XML文件**:一旦APK文件被打开,我们可以通过遍历`getFromName()`或`getNameIndex()`方法找到特定的...

    PHP解析APK包获取所有信息

    2. **获取APK元数据**:APK中的AndroidManifest.xml文件包含了应用的主要元数据。我们可以读取这个XML文件,解析出我们需要的信息,如包名、版本名称和版本代码。 ```php $manifestIndex = $zip-&gt;locateName('...

    Android代码-android-manifest-parser

    一个纯Java、实现了SAX接口、无任何第三方依赖的 AndroidManifest.xml 解析工具。 AndroidManifest.xml文件格式 Binary AndroidManifest.xml Magic Number(0x00080003) 4bytes // 魔数 File Size 4bytes // 文件...

    jdom源码及jar

    File inputFile = new File("AndroidManifest.xml"); SAXBuilder builder = new SAXBuilder(); Document document = builder.build(inputFile); // 修改节点 Element manifest = document.getRootElement(); ...

    AXMLPrinter

    java -jar AXMLPrinter2.2.0.jar -s your_apk_file.apk AndroidManifest.xml ``` 这将把AndroidManifest.xml的内容以文本形式输出到控制台。 5. **查看结果**:解析完成后,你可以看到XML文件的结构化输出,便于...

    android.support.v4.jar android.support.v7.appcompat.jar

    两个java库,Unity发布安卓项目...另外,AndroidManifest.xml 文件中, &lt;provider android:name="android.support.v4.content.FileProvider" 建议改为 &lt;provider android:name="androidx.core.content.FileProvider

    apk 权限查询

    File apkFile = new File("path_to_your_apk_file.apk"); ZipFile zipFile = new ZipFile(apkFile); ZipEntry manifestEntry = zipFile.getEntry("AndroidManifest.xml"); if (manifestEntry != null) { ...

    Android开发宝典.rar

    目录 应用程序基础Application Fundamentals 4 ...清单文件The AndroidManifest.xml File 68 清单文件结构Structure of the Manifest File 68 文件约定File Conventions 70 文件特性File Features 73

    Android开发指南中文版

    应用程序基础Application Fundamentals 4 关键类 4 ...清单文件The AndroidManifest.xml File 68 清单文件结构Structure of the Manifest File 68 文件约定File Conventions 70 文件特性File Features 73

    Android代码-android-apk-parser

    This is accomplished by decompressing the AndroidManifest.xml file and then decoding the compiled XML binary file to glean this information. I've been using this for some automatic versioning of ...

    packagemannger例子,获取系统应用程序

    ndents to information collected from the AndroidManifest.xml file associated with the package, plus additional information that is computed by the system about installed packages. 在Android开发中,`...

    Android编程指南(中文)

    #### 七、清单文件 - The AndroidManifest.xml File **1. 清单文件结构 - Structure of the Manifest File** - **元素结构**: AndroidManifest.xml 文件包含了一系列的元素,用于描述应用程序的基本信息和所有组件...

    java解析apk信息

    String apkPath = "path_to_your_apk_file.apk"; try (ZipFile apk = new ZipFile(new File(apkPath))) { ZipEntry manifestEntry = apk.getEntry("AndroidManifest.xml"); if (manifestEntry != null) { try ...

    Mac下apk渠道检测工具

    - 在脚本中,你可以使用`unzip`命令来解压apk文件,例如:`unzip -q your_apk_file.apk`。`-q`参数表示安静模式,避免输出解压过程的信息。 - 解压后,需要找到AndroidManifest.xml文件。通常它位于`res`目录下。 ...

Global site tag (gtag.js) - Google Analytics