【问题标题】:how to manipulate apk variant versioncode如何操作apk变体版本代码
【发布时间】:2018-11-06 15:22:25
【问题描述】:

android apk 的 versionCode 在 defaultConfig 中设置。我想为我的每种构建类型进行更改,但似乎这只能通过口味来完成?是否有另一种方法可以覆盖 versionCode,可能类似于更新 outputFileName 的方式?

【问题讨论】:

  • 所以例如你需要有与发布版本不同的调试版本代码?
  • 我们有暂存、发布和调试。不太关心调试,但希望登台和发布具有不同的版本代码,因为它们指向不同的服务(通过环境变量设置)。我们使用提交的数量作为我们当前的版本代码。但是 Play 不会让我们有两个具有相同 versionCode 的不同版本。我们想将 prod 更改为 versionCode * 2,将 staging 更改为 versionCode * 2 - 1。
  • 我认为您的案例与产品风味完美契合。您为 prod 设置了风味,为 stage 设置了风味。在这两个设置版本代码作为您的表达式(例如 300 + android.defaultConfig.versionCode 用于生产,200 + android.defaultConfig.versionCode 用于发布)developer.android.com/studio/build/build-variants 然后,当您要运行或部署一个版本时,您可以在 4 Build Variants 中的组合将是:prodRelease、prodDebug、stageRelease 和 stageDebug
  • 除了那比我需要的更多变种,但它看起来像要走的路
  • 但是我现在已经用 assembleFlavourVariant 对其进行了排序,以选择我想要的那个

标签: android gradle android-gradle-plugin android-build-type


【解决方案1】:

我认为您的案例非常适合产品口味。

您为 prod 设置了一种风格,为 stage 设置了一种风格。在两个设置版本代码作为您的表达式(例如 300 + android.defaultConfig.versionCode 用于生产,200 + android.defaultConfig.versionCode 用于发布)

有关详细示例,请参阅文档: https://developer.android.com/studio/build/build-variants

然后,当您想要运行或部署一个版本时,您可以在 Build Variants 中的 4 种组合中进行选择:prodReleaseprodDebugstageRelease 和 stageDebug

【讨论】:

    【解决方案2】:

    您可以为您拥有的每个 buildType 创建不同的 AndroidManifest.xml,然后在清单中设置 versionCode,但我个人认为您应该使用风味。

    【讨论】:

      【解决方案3】:

      在你的项目根 build.gradle 你可以定义版本代码和版本名称这样的东西

        def code = project.hasProperty('versionCode') ? versionCode.toInteger() : 
              (System.getenv("VERSION_CODE") as Integer ?: <default-version-code>)
      
        def name = project.hasProperty('versionName') ? versionName.toString() : 
        (System.getenv("VERSION_NAME") as String ?: "<default-version-name>")
      

      您可以像这样在构建命令中提供版本代码和名称运行时 -P = 值

       allprojects {
          ext.baseVersionCode = code
          ext.baseVersionName = name    
      }
      

      您可以在所有模块中访问这些版本代码。在应用程序 build.gradle 中

      defaultConfig {
          versionCode baseVersionCode
          versionName baseVersionName
          archivesBaseName = "customzied_apk_name"
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多