/packages/flutter_tools/lib/src/commands/build_windows.dart

https://github.com/flutter/flutter · Dart · 66 lines · 53 code · 9 blank · 4 comment · 3 complexity · 4ffccad65993ffbb006e58cb6168cfbb MD5 · raw file

  1. // Copyright 2014 The Flutter Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. import 'package:meta/meta.dart';
  5. import '../base/analyze_size.dart';
  6. import '../base/common.dart';
  7. import '../build_info.dart';
  8. import '../cache.dart';
  9. import '../features.dart';
  10. import '../globals.dart' as globals;
  11. import '../project.dart';
  12. import '../runner/flutter_command.dart' show FlutterCommandResult;
  13. import '../windows/build_windows.dart';
  14. import '../windows/visual_studio.dart';
  15. import 'build.dart';
  16. /// A command to build a windows desktop target through a build shell script.
  17. class BuildWindowsCommand extends BuildSubCommand {
  18. BuildWindowsCommand({ bool verboseHelp = false }) {
  19. addCommonDesktopBuildOptions(verboseHelp: verboseHelp);
  20. }
  21. @override
  22. final String name = 'windows';
  23. @override
  24. bool get hidden => !featureFlags.isWindowsEnabled || !globals.platform.isWindows;
  25. @override
  26. Future<Set<DevelopmentArtifact>> get requiredArtifacts async => <DevelopmentArtifact>{
  27. DevelopmentArtifact.windows,
  28. };
  29. @override
  30. String get description => 'Build a Windows desktop application.';
  31. @visibleForTesting
  32. VisualStudio visualStudioOverride;
  33. @override
  34. Future<FlutterCommandResult> runCommand() async {
  35. final FlutterProject flutterProject = FlutterProject.current();
  36. final BuildInfo buildInfo = getBuildInfo();
  37. if (!featureFlags.isWindowsEnabled) {
  38. throwToolExit('"build windows" is not currently supported.');
  39. }
  40. if (!globals.platform.isWindows) {
  41. throwToolExit('"build windows" only supported on Windows hosts.');
  42. }
  43. await buildWindows(
  44. flutterProject.windows,
  45. buildInfo,
  46. target: targetFile,
  47. visualStudioOverride: visualStudioOverride,
  48. sizeAnalyzer: SizeAnalyzer(
  49. fileSystem: globals.fs,
  50. logger: globals.logger,
  51. appFilenamePattern: 'app.so',
  52. flutterUsage: globals.flutterUsage,
  53. ),
  54. );
  55. return FlutterCommandResult.success();
  56. }
  57. }