Request the user upgrade if the Android SDK version is 24 (#8462)
* Request the user upgrade if the Android SDK version is 24
* Update android_sdk_test.dart
* Update android_sdk.dart
diff --git a/packages/flutter_tools/lib/src/android/android_sdk.dart b/packages/flutter_tools/lib/src/android/android_sdk.dart
index 0a7389f..c3fec0d 100644
--- a/packages/flutter_tools/lib/src/android/android_sdk.dart
+++ b/packages/flutter_tools/lib/src/android/android_sdk.dart
@@ -2,14 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-import 'package:pub_semver/pub_semver.dart';
-
import '../base/common.dart';
import '../base/context.dart';
import '../base/file_system.dart';
import '../base/os.dart';
import '../base/platform.dart';
import '../base/process_manager.dart';
+import '../base/version.dart';
import '../globals.dart';
AndroidSdk get androidSdk => context[AndroidSdk];
@@ -36,6 +35,9 @@
'android-stable': 24,
};
+/// The minimum Android SDK version we support.
+const int minimumAndroidSdkVersion = 25;
+
/// Locate ADB. Prefer to use one from an Android SDK, if we can locate that.
/// This should be used over accessing androidSdk.adbPath directly because it
/// will work for those users who have Android Platform Tools installed but
@@ -188,7 +190,7 @@
return new AndroidSdkVersion(
this,
platformVersionName: platformName,
- buildToolsVersionName: buildToolsVersion.toString()
+ buildToolsVersion: buildToolsVersion
);
}).where((AndroidSdkVersion version) => version != null).toList();
@@ -204,12 +206,13 @@
class AndroidSdkVersion implements Comparable<AndroidSdkVersion> {
AndroidSdkVersion(this.sdk, {
this.platformVersionName,
- this.buildToolsVersionName
+ this.buildToolsVersion,
});
final AndroidSdk sdk;
final String platformVersionName;
- final String buildToolsVersionName;
+ final Version buildToolsVersion;
+ String get buildToolsVersionName => buildToolsVersion.toString();
int get sdkLevel {
if (_namedVersionMap.containsKey(platformVersionName))
@@ -229,6 +232,10 @@
String get apksignerPath => getBuildToolsPath('apksigner');
List<String> validateSdkWellFormed({bool requireApkSigner = true}) {
+ if (buildToolsVersion.major < minimumAndroidSdkVersion) {
+ return <String>['Minimum supported Android SDK version is $minimumAndroidSdkVersion '
+ 'but this system has ${buildToolsVersion.major}. Please upgrade.'];
+ }
if (_exists(androidJarPath) != null)
return <String>[_exists(androidJarPath)];