Flutter doctor error message lookup (#23889)
diff --git a/packages/flutter_tools/lib/src/base/user_messages.dart b/packages/flutter_tools/lib/src/base/user_messages.dart new file mode 100644 index 0000000..4e0e4a8 --- /dev/null +++ b/packages/flutter_tools/lib/src/base/user_messages.dart
@@ -0,0 +1,183 @@ +import 'context.dart'; + +UserMessages get userMessages => context[UserMessages]; + +/// Class containing message strings that can be produced by Flutter tools. +class UserMessages { + // Messages used in FlutterValidator + String flutterStatusInfo(String channel, String version, String os, String locale) => + 'Channel $channel, v$version, on $os, locale $locale'; + String flutterVersion(String version, String flutterRoot) => + 'Flutter version $version at $flutterRoot'; + String flutterRevision(String revision, String age, String date) => + 'Framework revision $revision ($age), $date'; + String engineRevision(String revision) => 'Engine revision $revision'; + String dartRevision(String revision) => 'Dart version $revision'; + String get flutterBinariesDoNotRun => + 'Downloaded executables cannot execute on host.\n' + 'See https://github.com/flutter/flutter/issues/6207 for more information'; + String get flutterBinariesLinuxRepairCommands => + 'On Debian/Ubuntu/Mint: sudo apt-get install lib32stdc++6\n' + 'On Fedora: dnf install libstdc++.i686\n' + 'On Arch: pacman -S lib32-libstdc++5'; + + // Messages used in NoIdeValidator + String get noIdeStatusInfo => 'No supported IDEs installed'; + String get noIdeInstallationInfo => 'IntelliJ - https://www.jetbrains.com/idea/'; + + // Messages used in IntellijValidator + String intellijStatusInfo(String version) => 'version $version'; + String get intellijPluginInfo => + 'For information about installing plugins, see\n' + 'https://flutter.io/intellij-setup/#installing-the-plugins'; + String intellijMinimumVersion(String minVersion) => + 'This install is older than the minimum recommended version of $minVersion.'; + String intellijLocation(String installPath) => 'IntelliJ at $installPath'; + + // Message used in IntellijValidatorOnMac + String get intellijMacUnknownResult => 'Cannot determine if IntelliJ is installed'; + + // Messages used in DeviceValidator + String get devicesMissing => 'No devices available'; + String devicesAvailable(int devices) => '$devices available'; + + // Messages used in AndroidValidator + String androidCantRunJavaBinary(String javaBinary) => 'Cannot execute $javaBinary to determine the version'; + String get androidUnknownJavaVersion => 'Could not determine java version'; + String androidJavaVersion(String javaVersion) => 'Java version $javaVersion'; + String androidBadSdkDir(String envKey, String homeDir) => + '$envKey = $homeDir\n' + 'but Android SDK not found at this location.'; + String androidMissingSdkInstructions(String envKey) => + 'Unable to locate Android SDK.\n' + 'Install Android Studio from: https://developer.android.com/studio/index.html\n' + 'On first launch it will assist you in installing the Android SDK components.\n' + '(or visit https://flutter.io/setup/#android-setup for detailed instructions).\n' + 'If Android SDK has been installed to a custom location, set $envKey to that location.\n' + 'You may also want to add it to your PATH environment variable.\n'; + String androidSdkLocation(String directory) => 'Android SDK at $directory'; + String androidSdkPlatformToolsVersion(String platform, String tools) => + 'Platform $platform, build-tools $tools'; + String get androidSdkInstallHelp => + 'Try re-installing or updating your Android SDK,\n' + 'visit https://flutter.io/setup/#android-setup for detailed instructions.'; + String get androidMissingNdk => 'Android NDK location not configured (optional; useful for native profiling support)'; + String androidNdkLocation(String directory) => 'Android NDK at $directory'; + // Also occurs in AndroidLicenseValidator + String androidStatusInfo(String version) => 'Android SDK version $version'; + + // Messages used in AndroidLicenseValidator + String get androidMissingJdk => + 'No Java Development Kit (JDK) found; You must have the environment ' + 'variable JAVA_HOME set and the java binary in your PATH. ' + 'You can download the JDK from https://www.oracle.com/technetwork/java/javase/downloads/.'; + String androidJdkLocation(String location) => 'Java binary at: $location'; + String get androidLicensesAll => 'All Android licenses accepted.'; + String get androidLicensesSome => 'Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses'; + String get androidLicensesNone => 'Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses'; + String get androidLicensesUnknown => 'Android license status unknown.'; + String androidSdkOutdated(String managerPath) => + 'A newer version of the Android SDK is required. To update, run:\n' + '$managerPath --update\n'; + String androidLicensesTimeout(String managerPath) => 'Intentionally killing $managerPath'; + String get androidSdkShort => 'Unable to locate Android SDK.'; + String androidMissingSdkManager(String sdkManagerPath) => + 'Android sdkmanager tool not found ($sdkManagerPath).\n' + 'Try re-installing or updating your Android SDK,\n' + 'visit https://flutter.io/setup/#android-setup for detailed instructions.'; + + // Messages used in AndroidStudioValidator + String androidStudioVersion(String version) => 'version $version'; + String androidStudioLocation(String location) => 'Android Studio at $location'; + String get androidStudioNeedsUpdate => 'Try updating or re-installing Android Studio.'; + String get androidStudioResetDir => + 'Consider removing your android-studio-dir setting by running:\n' + 'flutter config --android-studio-dir='; + + // Messages used in NoAndroidStudioValidator + String androidStudioMissing(String location) => + 'android-studio-dir = $location\n' + 'but Android Studio not found at this location.'; + String get androidStudioInstallation => + 'Android Studio not found; download from https://developer.android.com/studio/index.html\n' + '(or visit https://flutter.io/setup/#android-setup for detailed instructions).'; + + // Messages used in IOSValidator + String iOSXcodeLocation(String location) => 'Xcode at $location'; + String iOSXcodeOutdated(int versionMajor, int versionMinor) => + 'Flutter requires a minimum Xcode version of $versionMajor.$versionMinor.0.\n' + 'Download the latest version or update via the Mac App Store.'; + String get iOSXcodeEula => 'Xcode end user license agreement not signed; open Xcode or run the command \'sudo xcodebuild -license\'.'; + String get iOSXcodeMissingSimct => + 'Xcode requires additional components to be installed in order to run.\n' + 'Launch Xcode and install additional required components when prompted.'; + String get iOSXcodeMissing => + 'Xcode not installed; this is necessary for iOS development.\n' + 'Download at https://developer.apple.com/xcode/download/.'; + String get iOSXcodeIncomplete => + 'Xcode installation is incomplete; a full installation is necessary for iOS development.\n' + 'Download at: https://developer.apple.com/xcode/download/\n' + 'Or install Xcode via the App Store.\n' + 'Once installed, run:\n' + ' sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer'; + String get iOSIMobileDeviceMissing => + 'libimobiledevice and ideviceinstaller are not installed. To install with Brew, run:\n' + ' brew update\n' + ' brew install --HEAD usbmuxd\n' + ' brew link usbmuxd\n' + ' brew install --HEAD libimobiledevice\n' + ' brew install ideviceinstaller'; + String get iOSIMobileDeviceBroken => + 'Verify that all connected devices have been paired with this computer in Xcode.\n' + 'If all devices have been paired, libimobiledevice and ideviceinstaller may require updating.\n' + 'To update with Brew, run:\n' + ' brew update\n' + ' brew uninstall --ignore-dependencies libimobiledevice\n' + ' brew uninstall --ignore-dependencies usbmuxd\n' + ' brew install --HEAD usbmuxd\n' + ' brew unlink usbmuxd\n' + ' brew link usbmuxd\n' + ' brew install --HEAD libimobiledevice\n' + ' brew install ideviceinstaller'; + String get iOSDeviceInstallerMissing => + 'ideviceinstaller is not installed; this is used to discover connected iOS devices.\n' + 'To install with Brew, run:\n' + ' brew install --HEAD usbmuxd\n' + ' brew link usbmuxd\n' + ' brew install --HEAD libimobiledevice\n' + ' brew install ideviceinstaller'; + String iOSDeployVersion(String version) => 'ios-deploy $version'; + String iOSDeployOutdated(String minVersion) => + 'ios-deploy out of date ($minVersion is required). To upgrade with Brew:\n' + ' brew upgrade ios-deploy'; + String get iOSDeployMissing => + 'ios-deploy not installed. To install:\n' + ' brew install ios-deploy'; + String get iOSBrewMissing => + 'Brew can be used to install tools for iOS device development.\n' + 'Download brew at https://brew.sh/.'; + + // Messages used in CocoaPodsValidator + String cocoaPodsVersion(String version) => 'CocoaPods version $version'; + String cocoaPodsUninitialized(String consequence) => + 'CocoaPods installed but not initialized.\n' + '$consequence\n' + 'To initialize CocoaPods, run:\n' + ' pod setup\n' + 'once to finalize CocoaPods\' installation.'; + String cocoaPodsMissing(String consequence, String installInstructions) => + 'CocoaPods not installed.\n' + '$consequence\n' + 'To install:\n' + '$installInstructions'; + String cocoaPodsOutdated(String recVersion, String consequence, String upgradeInstructions) => + 'CocoaPods out of date ($recVersion is recommended).\n' + '$consequence\n' + 'To upgrade:\n' + '$upgradeInstructions'; + + // Messages used in VsCodeValidator + String vsCodeVersion(String version) => 'version $version'; + String vsCodeLocation(String location) => 'VS Code at $location'; + String vsCodeFlutterExtensionMissing(String url) => 'Flutter extension not installed; install from\n$url'; +}