diff --git a/examples/hello_world/android/app/build.gradle b/examples/hello_world/android/app/build.gradle index 67db8d3fbe0e..5d571d1d78eb 100644 --- a/examples/hello_world/android/app/build.gradle +++ b/examples/hello_world/android/app/build.gradle @@ -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 "io.flutter.examples.hello_world" compileSdk flutter.compileSdkVersion @@ -38,8 +20,8 @@ android { applicationId "io.flutter.examples.hello_world" minSdkVersion flutter.minSdkVersion targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName + versionCode flutter.versionCode() + versionName flutter.versionName() } buildTypes { diff --git a/examples/layers/android/app/build.gradle b/examples/layers/android/app/build.gradle index 322731cf699b..33437aaa29b1 100644 --- a/examples/layers/android/app/build.gradle +++ b/examples/layers/android/app/build.gradle @@ -15,16 +15,6 @@ if (flutterRoot == null) { throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") } -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - apply plugin: 'com.android.application' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" @@ -41,8 +31,8 @@ android { applicationId "io.flutter.examples.layers" minSdkVersion flutter.minSdkVersion targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName + versionCode flutter.versionCode() + versionName flutter.versionName() } buildTypes { diff --git a/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy b/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy index 772d31222362..375e293bd9db 100644 --- a/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy +++ b/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy @@ -69,6 +69,34 @@ class FlutterExtension { /** Allows to override the target file. Otherwise, the target is lib/main.dart. */ String target + + /** The versionCode that was read from app's local.properties. */ + String flutterVersionCode = null + + /** The versionName that was read from app's local.properties. */ + String flutterVersionName = null + + /** Returns flutterVersionCode as an integer with error handling. */ + Integer versionCode() { + if (flutterVersionCode == null) { + throw new GradleException("flutterVersionCode must not be null.") + } + + if (!flutterVersionCode.isNumber()) { + throw new GradleException("flutterVersionCode must be an integer.") + } + + return flutterVersionCode.toInteger() + } + + /** Returns flutterVersionName with error handling. */ + String versionName() { + if (flutterVersionName == null) { + throw new GradleException("flutterVersionName must not be null.") + } + + return flutterVersionName + } } // This buildscript block supplies dependencies for this file's own import @@ -226,7 +254,28 @@ class FlutterPlugin implements Plugin { // Load shared gradle functions project.apply from: Paths.get(flutterRoot.absolutePath, "packages", "flutter_tools", "gradle", "src", "main", "groovy", "native_plugin_loader.groovy") - project.extensions.create("flutter", FlutterExtension) + def extension = project.extensions.create("flutter", FlutterExtension) + 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" + } + extension.flutterVersionCode = flutterVersionCode + + + def flutterVersionName = localProperties.getProperty("flutter.versionName") + if (flutterVersionName == null) { + flutterVersionName = "1.0" + } + extension.flutterVersionName = flutterVersionName + this.addFlutterTasks(project) // By default, assembling APKs generates fat APKs if multiple platforms are passed.