如何在 AGP 7.0.0-alpha15 之后更改版本代码

Dam*_*ioo 5 android gradle android-gradle-plugin

在 AGP 7.0.0-alpha15 之前,我可以像这样更改应用程序的版本代码

android {
  defaultConfig {
    applicationVariants.all {
      if (buildType.name == "debug") {
        outputs.forEach { output ->
          (output as? com.android.build.gradle.internal.api.ApkVariantOutputImpl)?.versionCodeOverride = 1
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

applicationVariants AGP 7.0.0-alpha15 之后好像不见了,怎么改?

PS:在普通的 gradle 中似乎没问题,上面是 Kotlin

编辑

通过下面的回答,我能够在构建中覆盖版本代码:

android {
  androidComponents.onVariants { appVariant ->
    if (appVariant.buildType == "release") {
      appVariant.outputs.forEach {
        it.versionCode.set(1)
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 6

Variant API 将在 AGP 7.0.0 中更改为延迟评估模型,目前 Alpha 15 似乎已经为此删除了旧的 API。展望未来,您将需要使用androidComponentsDSL,它可以访问变体。不过,我不确定您是否能够像这样重写版本代码。查看beforeVariantsonVariants了解更多信息:

android {
  androidComponents.beforeVariants { variantBuilder ->
    // Callback before variants are built. Can be modified, but doesn't allow access to outputs
  }
  androidComponents.onVariants { variant ->
    // Callback after variants are built. Apparently it's read-only access at this point, but outputs are available here
    println(variant.outputs)
  }
}
Run Code Online (Sandbox Code Playgroud)