Flutter Gradle Plugin: add versionName and versionCode to FlutterExtension (#146044)

This PR is a follow-up of a previous PR of mine:
https://github.com/flutter/flutter/pull/141417. It was unfinished, i.e.
I only implemented it and used it in `examples/hello_world`. No "flutter
create" templates were modified.

This change is theoretically breaking, but in practice, I am pretty sure
nobody uses this. It was not accounced anywhere, the only app using it
is `examples/hello_world`. I did not do that (that=update docs and
templates) because I wanted a solution that is idiomatic in both Gradle
and Kotlin, and only now I found time to do this.

### Without this change

```groovy
defaultConfig {
    applicationId = "io.flutter.examples.hello_world"
    minSdk = flutter.minSdkVersion
    targetSdk = flutter.targetSdkVersion
    versionCode = flutter.versionCode()
    versionName = flutter.versionName()
}
```

### With this change

```groovy
defaultConfig {
    applicationId = "io.flutter.examples.hello_world"
    minSdk = flutter.minSdkVersion
    targetSdk = flutter.targetSdkVersion
    versionCode = flutter.versionCode
    versionName = flutter.versionName
}
```

Idiomatic getter - yay! It's consistent between assignment of all four
props.

### Issue

fixes https://github.com/flutter/flutter/issues/146067

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

---------

Co-authored-by: Reid Baker <reidbaker@google.com>
This commit is contained in:
Bartek Pacia 2024-04-01 18:09:13 +02:00 committed by GitHub
parent 888cf95cfe
commit ec82f0d895
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 9 additions and 27 deletions

View file

@ -7,24 +7,6 @@ plugins {
id "dev.flutter.flutter-gradle-plugin"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
android {
namespace "com.example.view"
compileSdk flutter.compileSdkVersion
@ -38,8 +20,8 @@ android {
applicationId "io.flutter.examples.flutter_view"
minSdkVersion flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
versionCode flutter.versionCode
versionName flutter.versionName
}
buildTypes {

View file

@ -20,8 +20,8 @@ android {
applicationId = "io.flutter.examples.hello_world"
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode()
versionName = flutter.versionName()
versionCode = flutter.versionCode
versionName = flutter.versionName
}
buildTypes {

View file

@ -20,8 +20,8 @@ android {
applicationId "io.flutter.examples.layers"
minSdkVersion flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion
versionCode flutter.versionCode()
versionName flutter.versionName()
versionCode flutter.versionCode
versionName flutter.versionName
}
buildTypes {

View file

@ -17,7 +17,7 @@ class FlutterAppPluginLoaderPlugin implements Plugin<Settings> {
settings.ext.flutterSdkPath = properties.getProperty("flutter.sdk")
assert settings.ext.flutterSdkPath != null, "flutter.sdk not set in local.properties"
}
// Load shared gradle functions
settings.apply from: Paths.get(settings.ext.flutterSdkPath, "packages", "flutter_tools", "gradle", "src", "main", "groovy", "native_plugin_loader.groovy")

View file

@ -78,7 +78,7 @@ class FlutterExtension {
public String flutterVersionName = null
/** Returns flutterVersionCode as an integer with error handling. */
public Integer versionCode() {
public Integer getVersionCode() {
if (flutterVersionCode == null) {
throw new GradleException("flutterVersionCode must not be null.")
}
@ -91,7 +91,7 @@ class FlutterExtension {
}
/** Returns flutterVersionName with error handling. */
public String versionName() {
public String getVersionName() {
if (flutterVersionName == null) {
throw new GradleException("flutterVersionName must not be null.")
}