因为参加的几个比赛都要求开发 APP,为了实现跨端开发,因此盯上了 Flutter,但是在配置 Flutter 开发环境的时候碰上了几个小问题,在运行flutter doctor
的时候主要出现下面的错误。
第一个:Windows Version (Unable to confirm if installed Windows version is 10 or greater)
解决方法:参考网址
1、把该目录下的文件替换为下面的代码(它与原点相同,但进行了一些调整):(FLUTTER-SDK-DIR)\packages\flutter_tools\lib\src\windows\windows_version_validator.dart
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:process/process.dart';
import '../base/io.dart';
import '../doctor_validator.dart';
// FIX #1 - Remove everything from line 10 to 20 in original source code.
/// Validator for supported Windows host machine operating system version.
class WindowsVersionValidator extends DoctorValidator {
const WindowsVersionValidator({required ProcessManager processManager})
: _processManager = processManager,
super('Windows Version');
final ProcessManager _processManager;
@override
Future<ValidationResult> validate() async {
// FIX #2 - Replace 'systeminfo' by 'ver' command
final ProcessResult result =
await _processManager.run(<String>['ver'], runInShell: true);
if (result.exitCode != 0) {
return const ValidationResult(
ValidationType.missing,
<ValidationMessage>[],
statusInfo: 'Exit status from running `systeminfo` was unsuccessful',
);
}
final String resultStdout = result.stdout as String;
// FIX #3 - Remove brackets from output
final String resultAdjusted = resultStdout.replaceAll('[','').replaceAll(']','');
// FIX #4 - Split the output at spaces, and get Windows version at position 3.
// Split again at dots and get the major version at position 0.
// Cast the output to int.
final int winver = int.parse(resultAdjusted.split(' ').elementAt(3).split('.').elementAt(0));
// Use the string split method to extract the major version
// and check against the [kUnsupportedVersions] list
final ValidationType windowsVersionStatus;
final String statusInfo;
// FIX #5 - Check if Windows major version is greater than 10.
// Succeeds if true.
if (winver >= 10) {
windowsVersionStatus = ValidationType.installed;
statusInfo = 'Installed version of Windows is version 10 or higher';
} else {
windowsVersionStatus = ValidationType.missing;
statusInfo =
'Unable to confirm if installed Windows version is 10 or greater';
}
return ValidationResult(
windowsVersionStatus,
const <ValidationMessage>[],
statusInfo: statusInfo,
);
}
}
2、删除文件。(FLUTTER-SDK-DIR)\bin\cache\flutter_tools.stamp/
3、再跑一次flutter doctor
。
第二个:Android toolchain - develop for Android devices (Android SDK version 33.0.2) X cmdline-tools component is missing
(截图时已解决)
解决方法:因为电脑上已经安装了 Android Studio,因此只需要在 Android Studio 当中打开 SDK Manager,安装Android SDK Command-line Tools 即可。
如果在安装之后仍出现Android license status unknown.
,运行一下flutter doctor --android-licenses
即可。
第三个:如下图。
解决方法:
将flutter\packages\flutter_tools\lib\src\http_host_validator.dart
中的部分代码替换。
最后再检查一次。
完成!