Fall-back to platform tools in Android SDK detection logic. (#28863)
diff --git a/packages/flutter_tools/lib/src/android/android_sdk.dart b/packages/flutter_tools/lib/src/android/android_sdk.dart
index 72545e0..99bba9f 100644
--- a/packages/flutter_tools/lib/src/android/android_sdk.dart
+++ b/packages/flutter_tools/lib/src/android/android_sdk.dart
@@ -365,6 +365,14 @@
}
static bool validSdkDirectory(String dir) {
+ return sdkDirectoryHasLicneses(dir) || sdkDirectoryHasPlatformTools(dir);
+ }
+
+ static bool sdkDirectoryHasPlatformTools(String dir) {
+ return fs.isDirectorySync(fs.path.join(dir, 'platform-tools'));
+ }
+
+ static bool sdkDirectoryHasLicneses(String dir) {
return fs.isDirectorySync(fs.path.join(dir, 'licenses'));
}
diff --git a/packages/flutter_tools/lib/src/application_package.dart b/packages/flutter_tools/lib/src/application_package.dart
index 61a13bf..40067c2 100644
--- a/packages/flutter_tools/lib/src/application_package.dart
+++ b/packages/flutter_tools/lib/src/application_package.dart
@@ -14,6 +14,7 @@
import 'base/file_system.dart';
import 'base/os.dart' show os;
import 'base/process.dart';
+import 'base/user_messages.dart';
import 'build_info.dart';
import 'globals.dart';
import 'ios/ios_workflow.dart';
@@ -94,7 +95,7 @@
factory AndroidApk.fromApk(File apk) {
final String aaptPath = androidSdk?.latestVersion?.aaptPath;
if (aaptPath == null) {
- printError('Unable to locate the Android SDK; please run \'flutter doctor\'.');
+ printError(userMessages.aaptNotFound);
return null;
}
diff --git a/packages/flutter_tools/lib/src/base/user_messages.dart b/packages/flutter_tools/lib/src/base/user_messages.dart
index b1778e4..1c30cdd 100644
--- a/packages/flutter_tools/lib/src/base/user_messages.dart
+++ b/packages/flutter_tools/lib/src/base/user_messages.dart
@@ -115,6 +115,8 @@
String get androidStudioResetDir =>
'Consider removing your android-studio-dir setting by running:\n'
'flutter config --android-studio-dir=';
+ String get aaptNotFound =>
+ 'Could not locate aapt. Please ensure you have the Android buildtools installed.';
// Messages used in NoAndroidStudioValidator
String androidStudioMissing(String location) =>