Show Android SDK path in doctor on partial installation (#87232)
diff --git a/packages/flutter_tools/lib/src/android/android_workflow.dart b/packages/flutter_tools/lib/src/android/android_workflow.dart
index dc970c8..a240c83 100644
--- a/packages/flutter_tools/lib/src/android/android_workflow.dart
+++ b/packages/flutter_tools/lib/src/android/android_workflow.dart
@@ -183,6 +183,9 @@
}
return ValidationResult(ValidationType.missing, messages);
}
+
+ messages.add(ValidationMessage(_userMessages.androidSdkLocation(androidSdk.directory.path)));
+
if (!androidSdk.cmdlineToolsAvailable) {
messages.add(ValidationMessage.error(_userMessages.androidMissingCmdTools));
return ValidationResult(ValidationType.missing, messages);
@@ -193,8 +196,6 @@
return ValidationResult(ValidationType.partial, messages);
}
- messages.add(ValidationMessage(_userMessages.androidSdkLocation(androidSdk.directory.path)));
-
String? sdkVersionText;
final AndroidSdkVersion? androidSdkLatestVersion = androidSdk.latestVersion;
if (androidSdkLatestVersion != null) {
diff --git a/packages/flutter_tools/test/general.shard/android/android_workflow_test.dart b/packages/flutter_tools/test/general.shard/android/android_workflow_test.dart
index ae30c28..784cbd2 100644
--- a/packages/flutter_tools/test/general.shard/android/android_workflow_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/android_workflow_test.dart
@@ -342,7 +342,8 @@
sdk
..licensesAvailable = true
..platformToolsAvailable = false
- ..cmdlineToolsAvailable = true;
+ ..cmdlineToolsAvailable = true
+ ..directory = fileSystem.directory('/foo/bar');
final ValidationResult validationResult = await AndroidValidator(
androidStudio: null,
androidSdk: sdk,
@@ -354,10 +355,14 @@
).validate();
expect(validationResult.type, ValidationType.partial);
- expect(
- validationResult.messages.map((ValidationMessage message) => message.message),
- contains(contains(UserMessages().androidSdkLicenseOnly(kAndroidHome))),
- );
+
+ final ValidationMessage sdkMessage = validationResult.messages.first;
+ expect(sdkMessage.type, ValidationMessageType.information);
+ expect(sdkMessage.message, 'Android SDK at /foo/bar');
+
+ final ValidationMessage licenseMessage = validationResult.messages.last;
+ expect(licenseMessage.type, ValidationMessageType.hint);
+ expect(licenseMessage.message, UserMessages().androidSdkLicenseOnly(kAndroidHome));
});
testWithoutContext('detects minimum required SDK and buildtools', () async {
@@ -432,7 +437,8 @@
sdk
..licensesAvailable = true
..platformToolsAvailable = true
- ..cmdlineToolsAvailable = false;
+ ..cmdlineToolsAvailable = false
+ ..directory = fileSystem.directory('/foo/bar');
final AndroidValidator androidValidator = AndroidValidator(
androidStudio: null,
@@ -448,10 +454,14 @@
final ValidationResult validationResult = await androidValidator.validate();
expect(validationResult.type, ValidationType.missing);
- expect(
- validationResult.messages.last.message,
- errorMessage,
- );
+
+ final ValidationMessage sdkMessage = validationResult.messages.first;
+ expect(sdkMessage.type, ValidationMessageType.information);
+ expect(sdkMessage.message, 'Android SDK at /foo/bar');
+
+ final ValidationMessage cmdlineMessage = validationResult.messages.last;
+ expect(cmdlineMessage.type, ValidationMessageType.error);
+ expect(cmdlineMessage.message, errorMessage);
});
testWithoutContext('detects minimum required java version', () async {