Android基础知识之Manifest文件的组织结构
原文:http://android.eoe.cn/topic/android_sdk
是AndroidManifest.xml文件中的根标签,她必须包含一个标签和指定的xmlns:android、 package两个属性。
属性:
xmlns:android
定义了Android的命名空间。这个属性一般可以设置为:
"http://schemas.android.com/apk/res/android".
package
一个Java语言风格的应用程序包名,这个包名必须唯一。这个包名可以包含大写或小写字母('A'到'Z'、'a'到'z')、数字和下划线('_')。当然个别 包名最好还是以字母开头比较好。
为了避免和其他开发人员冲突,你应该使用互联网域名作为你的基础包名(域名的反写)。例如,Google发布的应用程序包名是以com.google开头的,所以你绝不要使用usr.example来发布你的应用程序。
包名作为应用程序的唯一标示,同时它也是应用进程(application process)属性的默认名称(详情参考标签的android:process属性),也是activity的任务关联(task affinity)属性的默认值(详情参考标签的taskAffinity属性)。
* 注意* :你一旦发布了应用程序,包名就不能修改了。这个包名定义了你的应用程序的身份,所以如果你修改包名,它会被认为是一个完全不同的应用程序,从而以前版本的用户无法更新到新的版本。
android:sharedUserId
指定一个Linux用户的ID,这个ID会被其他应用程序所共享。通常情况下,Android会给每个应用程序分配一个唯一标示他们的ID。然而,如果多个应用程序的android:sharedUserId属性值相同且签署了相同的证书,它们将共享相同的ID。共享相同ID的应用程序可以访问彼此的数据,如果需要的话,还会运行同一个进程中。
android:sharedUserLabel
为android:sharedUserId而生的一个用户只读标签,这个标签设值的时候必须引用string资源文件,而不能直接使用string。
这个属性在API Level3里将介绍到。只有android:sharedUserId属性设置的时候android:sharedUserLabel属性才有意义。
android:versionCode
内部版本号。这个数字用来确定当前版本是否比另一个版本更新,数字越大版本越新。这个版本号并不会展现给用户,真正展现给用户的版本号是versionName这个属性的值。
这个值必须是整数,比如“100”。你可以任意定义它的值,只要后续版本是更高的数字。例如,它可以是一个编号:x.y这种格式的,你只需要把x和y单独的转化成数字就可以了(可以通过lower and upper 16 bits),或者你你可以在发布新版本的时候简单加1。
android:versionName
这个版本号就是展现给用户的。这个属性可以直接设值或引用string资源文件。这个版本号展现给用户并没有别的目的,这个versionCode属性意味着有重大的版本变化。
android:installLocation
应用程序的默认的安装位置。
以下关键字字符串:
<!-- 表格开始 -->
{|style="border-spacing: 0px;margin: 4px 4px; width: 90%; border-left:1px solid #ccc;border-top:1px solid #ccc; "
<!-- 这段是表头 -->
|-style="background:#DEE8F1; "
! style="border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px;" | 关键字
! style="border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px;" | 描述
<!-- 这段是表格 -->
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | "internalOnly"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | 应用程序会只在内部存储设备上安装。如果设了这个值,这个应用程序就不会在外部存储设备上安装,如果这时候内部存储设备空间满了,系统就不会安装这个应用程序了。如果你不定义android:installLocation属性的话,它的默认值就是internalOnly。
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | "auto"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | 应用程序可以安装在外部存储设备上,但是系统默认安装在内部存储设备上。不过尽管已经安装完成,用户还是可以通过系统设置来把应用程序移动到内部存储设备上或者外部存储设备上(移动到SD卡 or 移动到手机内存)。
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | "preferExternal"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | 应用程序大多会安装到外部存储设备上(SD卡),但是系统并不会保证这个请求会被优先处理。比如说当外部存储设备不可用或者满了或者应用程序使用了forward-locking(不支持外部存车设备的机制)机制,这个时候应用程序就会被安装到内部存储设备上,不过尽管已经安装完成,用户还是可以通过系统设置来把应用程序移动到内部存储设备上或者外部存储设备上(移动到SD卡 or 移动到手机内存)。
|}
<!-- 表格结束 -->
* 注意:* 如果你使用了Google Play的Copy Protection组件,你的应用程序将不会安装到SD卡上,不过你可以用同是Google Play的Application Licensing来代替,这样你的应用程序就又可以安装不管是内部还是外部存储设备上,当然包括SD。
* 提示:* 默认情况下,你的应用程序只能安装到内部存储设备上,而不能安装到外部存储设备上,除非你定义了android:installLocation的属性值为auto" or "preferExternal"。
当应用程序安装到外部存储设备上的时候:
* apk安装文件会保存在外部存储设备上,但是与应用程序相关的任何数据(比如数据库)仍然会保存在内部存储设备上。
* 保存apk安装文件的容器(SD卡)会对其进行加密,只允许在当前设备上运行(用户是没有办法直接把SD卡移动到另一台设备上并进行安装的)。尽管如此,同一个设备还是可以使用多个SD卡。
* 当用户有需求的时候,应用程序还是可以移动到内部存储设备(手机内存)上的。
当然用户也会有这样的需求:把应用程序从内部存储设备移动到外部存储设备。但是如果应用程序使用了默认的android:installLocation属性即internalOnly属性,系统是不能够把应用程序从内部存储设备移动到外部存储设备上的。
关于android:installLocation这个属性,详情请参考App Install Location (包括如何处理向后兼容的问题)
参考:API Level 8。
参考:
API Level1下的所有属性,在属性描述中单独注明的除外
Android基础知识之Manifest文件的组织结构的更多相关文章
- Android基础知识之Manifest文件中的用户权限元素
原文:http://android.eoe.cn/topic/android_sdk 分任务原文链接一:http://developer.android.com/guide/topics/manife ...
- Android基础知识之Manifest中的Intent-filter元素
原文:http://android.eoe.cn/topic/android_sdk :指定活动.服务.或者广播接收者能支持的intent的类型.一个意图过滤器声明了其父组件的能力——一个活动或者服务 ...
- 【Xamarin开发 Android 系列 4】 Android 基础知识
原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...
- android基础知识13:AndroidManifest.xml文件解析
注:本文转载于:http://blog.csdn.net/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...
- Android基础知识(一)
前言 前言 从软件测试最终目的发现问题缺陷来看,Findyou比较认同一个观念,测试的能力大致可以划分成三个能力层次:发现问题.定位问题.预防问题.有机会探讨一下这个分类. 发现问题各种方式方法,比如 ...
- Android基础知识巩固:关于PendingIntent和广播
平时使用广播的场合比较多,但细节的东西,看过了也没有总结,以至于某些场合有小问题,还是要把原理和属性搞清楚才能运用自如. 其实也是自己比较懒,先看别人的blog,有个概念再去官网看英文的能好理解一些. ...
- Android基础知识之拼写检查框架
原文:http://android.eoe.cn/topic/android_sdk 拼写检查器框架 Android平台提供了一个拼写检查器的框架,来方便你在你的应用中实现并使用拼写检查.这个框架是A ...
- android开发学习---linux下开发环境的搭建&& android基础知识介绍
一.配置所需开发环境 1.基本环境配置 JDK 5或以上版本(仅有JRE不够) (http://www.oracle.com/technetwork/java/javase/downloads/ind ...
- Android基础知识之API等级介绍
原文:http://android.eoe.cn/topic/android_sdk :可以让开发者通过一个表示API级别的整数来描述程序在android平台上的兼容性,系统会将与系统本身提供的API ...
随机推荐
- 请指出document load和document ready的区别?
共同点:这两种事件都代表的是页面文档加载时触发. 异同点: ready 事件的触发,表示文档结构已经加载完成(不包含图片等非文字媒体文件). onload 事件的触发,表示页面包含图片等文件在内的所有 ...
- 请用js去除字符串空格?
方法一:使用replace正则匹配的方法 去除所有空格: str = str.replace(/\s*/g,""); 去除两头空格: str = str.replace(/^\s* ...
- http put post请求区别
1.RESTful API REST: Representational State Transfer url 对应服务器上的一种资源,e.g. 数据,图片等,所以url 中只含有名词,通过HTTP动 ...
- GoldenGate 12c + Oracle 12c Multitenant Container databases
下面为GoldenGate 12c + Oracle 12c Multitenant Container databases例子 1.安装OGG 源 端OGG: C:\Oracle\product\1 ...
- .NET Core 全新认识
来源:yubinfeng cnblogs.com/yubinfeng/p/6626694.html 一.概述 .NET 经历14年,在Windows平台上的表现已经相当优秀,但是“跨平台.开 ...
- django之创建第7-4个项目-配置views文件实现url传值
即:怎么实现url?name=xiaodeng&age=28等类似传值处理 1.配置views文件 # Create your views here. #coding:utf-8 from d ...
- 有限状态机(FSM)的Java 学习FSM
本文从简单的例子入手,逐步演变成非常复杂的程序. 在简明 状态模式(5.8)中,状态之间的变换由外界控制,或者说,多种状态是分割的.无关的.状态模式最有趣的地方正是讨论其状态的变迁. 1.引子 空调( ...
- Inno Setup入门(八)——有选择性的安装文件
这主要使用[Components]段实现,一个演示的代码如下: [setup] ;全局设置,本段必须 AppName=Test AppVerName=TEST DefaultDirName=" ...
- Chrome 好玩的插件
1 Lastpass : 用来把往各个网址的密码云端存储. 2 EditThisCookie : 查看网页的Cookie 3 Postman Interceptor : 用来配合Postman 进 ...
- topshelf 开发windows 服务资料
官方配置 http://docs.topshelf-project.com/en/latest/configuration/config_api.html#service-start-modes to ...