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)];
 
diff --git a/packages/flutter_tools/lib/src/base/version.dart b/packages/flutter_tools/lib/src/base/version.dart
index 5ef31f6..2f428ac 100644
--- a/packages/flutter_tools/lib/src/base/version.dart
+++ b/packages/flutter_tools/lib/src/base/version.dart
@@ -58,6 +58,20 @@
     }
   }
 
+  /// Returns the primary version out of a list of candidates.
+  ///
+  /// This is the highest-numbered stable version.
+  static Version primary(List<Version> versions) {
+    Version primary;
+    for (Version version in versions) {
+      if (primary == null || (version > primary)) {
+        primary = version;
+      }
+    }
+    return primary;
+  }
+
+
   static Version get unknown => new Version(0, 0, 0, text: 'unknown');
 
   /// Two [Version]s are equal if their version numbers are. The version text
diff --git a/packages/flutter_tools/lib/src/ios/ios_workflow.dart b/packages/flutter_tools/lib/src/ios/ios_workflow.dart
index 3154fab..5549284 100644
--- a/packages/flutter_tools/lib/src/ios/ios_workflow.dart
+++ b/packages/flutter_tools/lib/src/ios/ios_workflow.dart
@@ -4,12 +4,11 @@
 
 import 'dart:async';
 
-import 'package:pub_semver/pub_semver.dart' show Version;
-
 import '../base/io.dart';
 import '../base/os.dart';
 import '../base/platform.dart';
 import '../base/process.dart';
+import '../base/version.dart';
 import '../doctor.dart';
 import 'mac.dart';
 
