对您的应用进行版本控制

2019-05-29  本文已影响0人  鹿小纯0831

版本控制是应用升级和维护策略的关键组成部分。版本控制很重要,因为:

Android 系统不会使用应用版本信息对第三方应用的升级、降级或兼容性进行限制,而是由您负责在您的应用内执行版本限制,或通知用户版本限制与局限性。不过,Android 系统会根据构建文件中 minSdkVersion 设置的说明强制执行系统版本兼容性。该设置允许应用指定与其兼容的最低系统 API。如需了解详细信息,请参阅指定最低系统 API 版本

设置应用版本信息

要为您的应用定义版本信息,请在 Gradle 构建文件中为版本设置设定相应的值。这些值随后将在构建流程中合并到您应用的清单文件中。

:如果您的应用直接在 <manifest> 元素中定义应用版本,Gradle 构建文件中的版本值将替换清单中的设置。此外,在 Gradle 构建文件中定义这些设置还让您可以为应用的不同版本指定不同的值。为了在合并清单时提高灵活性和避免潜在覆盖,您应当从 <manifest> 元素中移除这些属性,并改在 Gradle 构建文件中定义您的版本设置。

可配置两个设置,您应始终为它们定义相应的值:

警告:Google Play 允许的最大 versionCode 值为 2100000000。

您可以将这些设置包含到 defaultConfig {} 块中(嵌套在模块的 build.gradle 文件的 android {} 块内部),为它们定义默认值。随后,您可以通过为各个构建类型或产品风味定义单独的值,为应用的不同版本替换这些默认值。下面的 build.gradle 文件显示了 defaultConfig {} 块和 productFlavors {} 块中的 versionCodeversionName设置。

android {
  ...
  defaultConfig {
    ...
    versionCode 2
    versionName "1.1"
  }
  productFlavors {
    demo {
      ...
      versionName "1.1-demo"
    }
    full {
      ...
    }
  }
}

在本示例的 defaultConfig {} 块中,versionCode 值表示当前 APK 包含应用的第二个版本,versionName 字符串则指定应用将以版本 1.1 向用户显示。此 build.gradle 文件还定义了两个产品风味,即“demo”和“full”。由于“demo”产品风味将 versionName 定义为“1.1-demo”,“demo”将使用此 versionName,而不是默认值。“full”产品风味块未定义 versionName,因此它将使用默认值 1.1。
Android 框架提供了一个 API,让您可以查询系统,获取有关应用的版本信息。要获取版本信息,请使用 PackageManagergetPackageInfo(java.lang.String, int) 方法。

:如果使用 Instant Run,Android Studio 会自动将 versionCode 设置为 MAXINT,将 versionName 设置为 INSTANTRUN

指定 API 级别要求

如果您的应用需要特定的最低版本的 Android 平台,您可以在应用的 build.gradle 文件中以 API 级别设置的形式指定版本要求。在构建流程中,这些设置将合并到您应用的清单文件中。指定 API 级别要求可确保只能将您的应用安装在运行兼容的 Android 平台版本的设备上。

:如果您直接在应用的清单文件中指定 API 级别要求,构建文件中的对应设置将替换清单文件中的设置。此外,在 Gradle 构建文件中定义这些设置还让您可以为应用的不同版本指定不同的值。为了在合并清单时提高灵活性和避免可能发生的覆盖,您应当从 <uses-sdk> 元素中移除这些属性,并改在 Gradle 构建文件中定义您的 API 级别设置。

存在两种 API 级别设置:

要在 build.gradle 文件中指定默认的 API 级别要求,请将上面的一个或多个设置添加到 defaultConfig {} 块中,嵌套在 android {} 块内。您还可以通过将设置添加到构建类型或产品风味的方式,为应用的不同版本替换这些默认值。下面的 build.gradle 文件可以指定 defaultConfig {} 块中默认的 minSdkVersiontargetSdkVersion 设置,并为一个产品风味替换 minSdkVersion

android {
  ...
  defaultConfig {
    ...
    minSdkVersion 14
    targetSdkVersion 24
  }
  productFlavors {
    main {
      ...
    }
    afterLollipop {
      ...
      minSdkVersion 21
    }
  }
}

在准备安装您的应用时,系统将检查这些设置的值,并将其与系统版本比较。如果 minSdkVersion 值大于系统版本,系统将阻止应用安装。

如果您不指定这些设置,系统将假设您的应用与所有平台版本兼容。

如需了解详细信息,请参阅 <uses-sdk> 清单元素文档以及 API 级别文档。有关 Gradle 构建设置,请参阅配置构建变体

上一篇下一篇

猜你喜欢

热点阅读