`
xlover
  • 浏览: 244411 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

程序升级/维护过程中,版本控制

 
阅读更多

用户需要了解安装到设备上的应用程序的版本信息,以及了解哪些版本可以进行升级。其它应用程序——包括你发布的其它程序——需要向系统查询你的应用程序的版本,来确定相互之间的兼容性。 你的应用程序发布的服务可能也需要查询版本来显示给用户。

Android系统自身不检查应用程序的版本信息,也不会强制限制升级或兼容等。相反的,只是用户或应用程序自身对应用程序的版本有限制。

Android系统会对程序manifest中描述的系统版本(minSdkVersion特性指定)进行检查。这样,应用程序可以指定兼容的最低系统API等级。

应用程序版本设定

 

为了定义应用程序的版本信息,你需要在程序的manifest文件中进行设定。这里有两个特性,而且往往你需要同时设定这两个值:

android:versionCode——整数值,代表应用程序代码的相对版本,也就是版本更新过多少次。

整数值有利于其它程序比较,检查是升级还是降级。你可以把这个值设定为任何想设的值,但是,你必须保证后续更新版的值要比这个大。系统不会强制要求这一行为,但是随着版本更新值也增加是正常的行为。

一般来说,你发布的第一版程序的versionCode设定为1,然后每次发布都会相应增加,不管发布的内容是较大还是较小的。这意味着android:versionCode不像应用程序的发布版本(看下面的android:versionName)那样显示给用户。应用程序和发布的服务不应该显示这个版本值给用户。

android:versionName——字符串值,代表应用程序的版本信息,需要显示给用户。

与android:versionCode一样,系统不会为了任何内部的目的使用这个值,除了显示给用户外。发布的服务也需要提取这个值来显示给用户。

你需要在manifest文件中定义这两个版本特性。

下面是一个manifest的例子,展示了android:versionCode和android:versionName特性的定义。

<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.girlcoding.com"android:versionCode="2"android:versionName="1.1"><applicationandroid:icon="@drawable/icon"android:label="@string/app_name"> ...</application></manifest>

在这个例子中,android:versionCode的值显示当前apk是第二版释放的代码,而android:codeName字符串中表述了相应的小版本号。

Android框架提供了一个API来查询应用程序的版本信息。为了获取版本信息,应用程序可以使用PackageManager的getPackageInfo(java.lang.String, int)方法,例如:

PackageManager manager = this.getPackageManager();
try {
PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
appVersion = info.versionName; // 版本名
catch (NameNotFoundException e)
 {
// TODO Auto-generated catch block
e.printStackTrace();
}

appVersion 就是从配置文件取出的版本名,versionCode同理

指定程序的系统API等级

如果你的程序有最低的Android平台限制,或者只是设计用于特定范围的Android平台,那么,你就可以在应用程序的manifest文件中指定API等级的信息。这样做是为了确保应用程序只能安装到搭载有兼容的Android系统的设备上。

指定API等级限制,在manifest文件中<uses-sdk>元素,并附带一个或多个特性:

android:minSdkVersion——应用程序能运行的最低Android系统的版本,通过平台的API等级标识指定。 android:targetSdkVersion——指定程序设计用于运行的API等级。在一些情况下,允许应用程序显式的指定目标运行的API等级,而不是仅设定最低运行的API等级。 android:maxSdkVersion——应用程序能运行的最高Android系统的版本,通过平台的API等级标识指定。重要:使用这个特性之前,请阅读<uses-sdk>文档。

当准备安装应用程序时,系统会检查这个属性的值并与系统的版本进行比较。如果android:minSdkVersion的值大于系统的版本,系统会放弃当前程序的安装。相似的,系统也只在android:maxSdkVersion与系统的版本兼容时才执行安装。

如果你没有在manifest中指定这些特性,那么,系统会假设你的程序与所有平台的版本兼容,且没有最高的API等级限制。

分享到:
评论

相关推荐

    C/S程序版本控制(自动更新)工具

    总的来说,C/S程序版本控制(自动更新)工具是保证C/S系统持续运行的关键组成部分,它简化了软件维护工作,提高了用户体验,同时也是企业信息化建设中不可或缺的一环。通过深入理解和正确使用这类工具,开发者可以更...

    根据版本号升级程序

    3. 版本比较与选择:在升级过程中,需要比较当前版本和可用的最新版本,以确定是否需要升级以及应该升级到哪个版本。这可以通过编程方式实现,比如使用版本比较库。 4. 升级脚本与自动化:编写升级脚本是升级过程的...

    JAVA项目更新升级程序

    综上所述,"JAVA项目更新升级程序"涵盖了Java Web项目的维护、系统升级的设计与实施、多线程编程、版本控制以及一系列的开发最佳实践。理解和掌握这些知识点对于任何Java Web开发者来说都是提升专业技能的关键。

    安川机器人YRC1000控制柜系统版本升级

    安川机器人的YRC1000控制柜系统版本升级是一项关键的维护任务,它确保设备的稳定运行和性能优化。以下是对这个过程的详细解释: 首先,进行系统升级前的重要步骤是备份所有个体文件和CMOS文件。这是为了防止在升级...

    PB程序自动升级,检测版本自动更新程序

    PB程序自动升级与检测版本自动更新程序是一种常见的软件维护策略,尤其在企业级应用中,以确保用户始终运行的是最新、最安全的软件版本。PB是PowerBuilder的缩写,这是一种由Sybase(现为SAP)开发的可视化编程工具...

    winform程序升级功能

    "winform程序升级功能"涉及到的是如何在已部署的WinForm应用中实现自动更新和手动更新的功能。 一、自动升级 自动升级是让用户在不离开应用程序的情况下,系统自动检测并下载最新的程序版本进行更新。这一过程通常...

    参考资料-基于dsPIC33F系列单片机的应用程序升级方法.zip

    本参考资料主要探讨的是如何对基于dsPIC33F系列单片机的应用程序进行升级,这是一个关键的维护和优化过程。 应用程序升级通常涉及以下几个关键步骤和知识点: 1. **编程接口**:dsPIC33F系列单片机通常通过串行...

    C++编程系列之自动升级程序

    总结,开发一个C++自动升级程序涵盖了从基础语言特性到高级应用的多个方面,包括网络编程、文件操作、并发处理、错误处理、版本控制、安装卸载、安全策略、设计模式和测试调试。熟练掌握这些知识点,才能构建出稳定...

    delphi中自动升级程序

    在Delphi编程环境中,开发一个自动升级程序是提高软件维护效率和用户体验的重要手段。自动升级功能使得用户无需手动下载安装新版本,程序可以检测到更新并自动完成升级过程。以下将详细阐述如何在Delphi中实现这样的...

    STM32通过SD卡升级程序

    SD卡是一种常见的非易失性存储设备,用于存储固件和数据,方便程序升级。 3. Bootloader:Bootloader是嵌入式系统启动时运行的第一段代码,负责加载操作系统或应用程序到内存中执行。在STM32通过SD卡升级程序中,...

    GD32远程升级程序源码含有iap和应用程序两个工程 stm32远程升级也可以参考此工程

    本文将详细解析标题和描述中提到的GD32远程升级程序源码,以及它如何适用于STM32的远程升级过程。 首先,我们要理解远程升级(FOTA,Firmware Over The Air)的概念。FOTA是一种通过网络对设备固件进行更新的技术,...

    Delphi程序的自动升级功能的实现(AutoUpdate使用指南)

    其中,AutoUpdate组件就是一种非常实用的解决方案,它能够帮助Delphi应用程序实现平滑无缝的自动升级过程。 #### 二、AutoUpdate组件安装与使用 **1. 下载AutoUpgrader** - 首先,需要下载AutoUpgrader.Pro.v...

    Delphi编写的自动升级程序

    自动升级程序的一大特点是其升级逻辑由脚本控制。这意味着开发者可以编写特定的脚本来定义升级过程中要执行的动作,包括: 1. **替换**:将旧版本的文件替换为新版本的文件,确保用户始终拥有最新的程序组件。 2. *...

    ab程序20版本转为19版本的方法

    在AB可编程控制器(PLC)的编程过程中,有时我们需要将程序从一个版本转换到另一个版本,例如从AB程序的20版本转为19版本。这个过程涉及到对程序源代码的兼容性和适应性的处理,确保在不同版本间运行的稳定性和一致...

    海康威视 DVR/NVR 升级支持萤石云配置方法

    - 在录像机菜单中找到“主菜单”&gt;“系统维护”&gt;“版本升级”选项。 - 选择已准备好的升级文件并点击“升级”。 5. **完成升级**: - 设备升级过程中请勿中断电源。 - 升级完成后,设备将自动重启。 6. **配置...

    IATF16949事态升级管理程序

    综上所述,IATF16949事态升级管理程序是汽车制造业中一个严谨的质量控制机制,它通过对问题的分级和明确的责任分配,确保公司在面对各种异常情况时能迅速响应,有效地维护产品质量和客户满意度。

    qupdate自动升级 程序

    总的来说,"qupdate自动升级程序"提供了一套完整的解决方案,使得开发者可以轻松地将自动升级功能整合到自己的C/S应用程序中,提升用户体验,同时简化维护工作。通过学习和使用这个工具,开发者能够确保他们的软件...

    AP6212 WIFI/BT 各个固件版本

    固件是控制这些硬件设备运行的软件,它包含了设备的操作系统、驱动程序和应用程序等核心组件。固件版本的更新通常是为了提升设备性能、修复已知问题、增加新功能或者提高安全性。以下将详细探讨AP6212的WIFI/BT各个...

    VB.NET 程序自动升级功能模块

    这个功能允许用户在不手动下载安装新版本的情况下,程序可以自动检测更新并完成升级过程。以下是对VB.NET程序自动升级功能模块的详细解释: 1. **自动检测更新**: - 通过在服务器上维护一个版本信息文件(如XML或...

Global site tag (gtag.js) - Google Analytics