Add basic support for listing Android AVDs
Very basic support for "flutter emulators" which just lists the available Android AVDs.
Relates to:
https://github.com/flutter/flutter/issues/14822
https://github.com/Dart-Code/Dart-Code/issues/490
https://github.com/flutter/flutter/issues/13379
diff --git a/packages/flutter_tools/lib/src/android/android_sdk.dart b/packages/flutter_tools/lib/src/android/android_sdk.dart
index ddab13c..1875c48 100644
--- a/packages/flutter_tools/lib/src/android/android_sdk.dart
+++ b/packages/flutter_tools/lib/src/android/android_sdk.dart
@@ -59,6 +59,23 @@
}
}
+/// 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
+/// not the full SDK.
+String getEmulatorPath([AndroidSdk existingSdk]) {
+ if (existingSdk?.emulatorPath != null)
+ return existingSdk.emulatorPath;
+
+ final AndroidSdk sdk = AndroidSdk.locateAndroidSdk();
+
+ if (sdk?.latestVersion == null) {
+ return os.which('emulator')?.path;
+ } else {
+ return sdk.emulatorPath;
+ }
+}
+
class AndroidSdk {
AndroidSdk(this.directory, [this.ndkDirectory, this.ndkCompiler,
this.ndkCompilerArgs]) {
@@ -200,6 +217,8 @@
String get adbPath => getPlatformToolsPath('adb');
+ String get emulatorPath => getToolsPath('emulator');
+
/// Validate the Android SDK. This returns an empty list if there are no
/// issues; otherwise, it returns a list of issues found.
List<String> validateSdkWellFormed() {
@@ -216,6 +235,10 @@
return fs.path.join(directory, 'platform-tools', binaryName);
}
+ String getToolsPath(String binaryName) {
+ return fs.path.join(directory, 'tools', binaryName);
+ }
+
void _init() {
Iterable<Directory> platforms = <Directory>[]; // android-22, ...