zoukankan      html  css  js  c++  java
  • android开发学习笔记(一)-Manifest文件

    一:概述

    所有的app都要在根目录下AndroidManifest.xml文件,这个文件显示了app告诉android系统的基本信息。在app代码运行之前,android系统从这个文件获取基本信息

    功能:

    1. 给app的java包起名作为这个app的唯一标识符
    2. 声明app中要使用的组件
    3. 决定哪些进程持有app组件
    4. 确定app需要的用户权限
    5. 它声明应用程序必须拥有哪些权限以访问API的被保护部分以及与其它应用程序交互
    6. 它声明应用程序必须拥有哪些权限以访问API的被保护部分以及与其它应用程序交互
    7. 声明app需要的最低级别
    8. 声明app需要链接的API函数库(除了android API框架)

    二:Manifest文件的结构

     1 <?xml version="1.0" encoding="utf-8"?>
     2 
     3 <manifest>
     4 
     5     <uses-permission />
     6     <permission />
     7     <permission-tree />
     8     <permission-group />
     9     <instrumentation />
    10     <uses-sdk />
    11     <uses-configuration />  
    12     <uses-feature />  
    13     <supports-screens />  
    14     <compatible-screens />  
    15     <supports-gl-texture />  
    16 
    17     <application>
    18 
    19         <activity>
    20             <intent-filter>
    21                 <action />
    22                 <category />
    23                 <data />
    24             </intent-filter>
    25             <meta-data />
    26         </activity>
    27 
    28         <activity-alias>
    29             <intent-filter> . . . </intent-filter>
    30             <meta-data />
    31         </activity-alias>
    32 
    33         <service>
    34             <intent-filter> . . . </intent-filter>
    35             <meta-data/>
    36         </service>
    37 
    38         <receiver>
    39             <intent-filter> . . . </intent-filter>
    40             <meta-data />
    41         </receiver>
    42 
    43         <provider>
    44             <grant-uri-permission />
    45             <meta-data />
    46             <path-permission />
    47         </provider>
    48 
    49         <uses-library />
    50 
    51     </application>
    52 
    53 </manifest>

    三:Manifest文件惯例

    element:

    每一个Manifest文件都必须要出现一次<manifest>和<application>元素,其他元素根据功能需要决定出现一次、多次或一次也不出现。

    所有值通过属性来设置,不会作为元素内的字符数据。

    同一级别的元素是乱序排列的。( <activity-alias> 元素是个例外,它必须跟在它所引用的<activity> 后面。)

    Attribute:

    正式意义上来说,每个元素的属性都是可选择的,但是在完成某个功能的前提下,某些元素的属性值必须要说明的,使用文档作为指引。对于真正可选的属性,它会提及一个默认值或讲述在规范缺少的时候发生什么。

    除了根元素<manifest>的属性值外,其他所有属性值都必须以前缀android:开始,因为前缀是一般性概念,所以当通过名称引用属性时文档通常会忽略它

    Declaring class names

     一些元素相当于java对象,包括<application>以及四大组件<activity>、<service>、<receiver>、<provider>

    如果你想定义一个组件类的子类时,这个子类的声明通过name属性,name属性包括了完整包名

    1 <manifest . . . >
    2     <application . . . >
    3         <service android:name="com.example.project.SecretService" . . . >
    4             . . .
    5         </service>
    6         . . .
    7     </application>
    8 </manifest>

     但是,作为简写。如果字符串的第一个字符是".",字符串将被添加到app的包名的尾部

    1 <manifest package="com.example.project" . . . >
    2     <application . . . >
    3         <service android:name=".SecretService" . . . >
    4             . . .
    5         </service>
    6         . . .
    7     </application>
    8 </manifest>

    当启动一个组件时,android创建一个子类的对象,如果子类未指定,它会创建一个基类

    Multiple values

    如果指定的值多于一个,通常要将元素重复再指定值,而不是在一个元素单元内列出多个值

    <intent-filter . . . >
        <action android:name="android.intent.action.EDIT" />
        <action android:name="android.intent.action.INSERT" />
        <action android:name="android.intent.action.DELETE" />
        . . .
    </intent-filter>

    Resource values:

     一些资源有显示给用户的值,例如,activity的一个label或者icon,这个属性值应该被本地化,因此被设置成来自同一个资源或主题。

    资源值用以下格式来表达

     1 @[package:]type:name 

    package:当资源在app的同一个包里时,package值可缺省

    type:资源的类型,例如string、drawable

    name:是一种用来指定特殊资源的名字。

     1 <activity android:icon="@drawable/smallPic" . . . > 

    主题值用以下格式表达

     1 ?[package:]type:name 

    String values

    属性值为字符串时,表示转义字符要加"\"。例如,'\n'用作回车或'\uxxxx'用作一个Unicode字符。

  • 相关阅读:
    二选一的痛定思痛
    .net 代码混淆原理性实践
    什么是 RSS?
    ViewEngine 深入解析与应用实例 {转}
    C#访问修饰符及各种元素的访问修饰符的默认值
    [转]基于VS.NET的自定项目模板研究
    刘若鹏
    System.Configuration 和Connection
    Page.Master.FindControl?还是Page.FindControl?
    模板页中的链接
  • 原文地址:https://www.cnblogs.com/shangshicc/p/3966184.html
Copyright © 2011-2022 走看看