From 693fb6560eeae1846918ea4aa332ffc5bf8c24ce Mon Sep 17 00:00:00 2001 From: Stanislav Baranov Date: Tue, 18 Dec 2018 12:54:26 -0800 Subject: [PATCH] Fix flutter tool to actually honor --build-number/--build-name flags. (#25520) --- .../flutter_tools/lib/src/android/gradle.dart | 19 +++++---- .../test/android/gradle_test.dart | 42 +++++++++++++++++++ 2 files changed, 54 insertions(+), 7 deletions(-) diff --git a/packages/flutter_tools/lib/src/android/gradle.dart b/packages/flutter_tools/lib/src/android/gradle.dart index 5567f5961b1..51bd02b5fac 100644 --- a/packages/flutter_tools/lib/src/android/gradle.dart +++ b/packages/flutter_tools/lib/src/android/gradle.dart @@ -231,7 +231,11 @@ void updateLocalProperties({ void changeIfNecessary(String key, String value) { if (settings.values[key] != value) { - settings.values[key] = value; + if (value == null) { + settings.values.remove(key); + } else { + settings.values[key] = value; + } changed = true; } } @@ -240,15 +244,16 @@ void updateLocalProperties({ if (androidSdk != null) changeIfNecessary('sdk.dir', escapePath(androidSdk.directory)); + changeIfNecessary('flutter.sdk', escapePath(Cache.flutterRoot)); - if (buildInfo != null) + + if (buildInfo != null) { changeIfNecessary('flutter.buildMode', buildInfo.modeName); - final String buildName = buildInfo?.buildName ?? manifest.buildName; - if (buildName != null) + final String buildName = buildInfo.buildName ?? manifest.buildName; changeIfNecessary('flutter.versionName', buildName); - final int buildNumber = buildInfo?.buildNumber ?? manifest.buildNumber; - if (buildNumber != null) - changeIfNecessary('flutter.versionCode', '$buildNumber'); + final int buildNumber = buildInfo.buildNumber ?? manifest.buildNumber; + changeIfNecessary('flutter.versionCode', buildNumber?.toString()); + } if (changed) settings.writeContents(localProperties); diff --git a/packages/flutter_tools/test/android/gradle_test.dart b/packages/flutter_tools/test/android/gradle_test.dart index cd361484dc2..c2cedec9c89 100644 --- a/packages/flutter_tools/test/android/gradle_test.dart +++ b/packages/flutter_tools/test/android/gradle_test.dart @@ -325,6 +325,48 @@ flutter: expectedBuildNumber: '3', ); }); + + testUsingAndroidContext('allow build info to unset build name and number', () async { + const String manifest = ''' +name: test +dependencies: + flutter: + sdk: flutter +flutter: +'''; + await checkBuildVersion( + manifest: manifest, + buildInfo: const BuildInfo(BuildMode.release, null, buildName: null, buildNumber: null), + expectedBuildName: null, + expectedBuildNumber: null, + ); + await checkBuildVersion( + manifest: manifest, + buildInfo: const BuildInfo(BuildMode.release, null, buildName: '1.0.2', buildNumber: 3), + expectedBuildName: '1.0.2', + expectedBuildNumber: '3', + ); + await checkBuildVersion( + manifest: manifest, + buildInfo: const BuildInfo(BuildMode.release, null, buildName: '1.0.3', buildNumber: 4), + expectedBuildName: '1.0.3', + expectedBuildNumber: '4', + ); + // Values don't get unset. + await checkBuildVersion( + manifest: manifest, + buildInfo: null, + expectedBuildName: '1.0.3', + expectedBuildNumber: '4', + ); + // Values get unset. + await checkBuildVersion( + manifest: manifest, + buildInfo: const BuildInfo(BuildMode.release, null, buildName: null, buildNumber: null), + expectedBuildName: null, + expectedBuildNumber: null, + ); + }); }); }