[Tool] [Windows] Output app path on build completion (#122928)
[Tool] [Windows] Output app path on build completion
diff --git a/dev/devicelab/lib/tasks/run_tests.dart b/dev/devicelab/lib/tasks/run_tests.dart
index 9dc6b3d..f7a4116 100644
--- a/dev/devicelab/lib/tasks/run_tests.dart
+++ b/dev/devicelab/lib/tasks/run_tests.dart
@@ -177,6 +177,9 @@
r'Building Windows application\.\.\.\s*\d+(\.\d+)?(ms|s)',
multiLine: true,
);
+ static final RegExp _builtOutput = RegExp(
+ r'Built build\\windows\\runner\\(Debug|Release)\\\w+\.exe( \(\d+(\.\d+)?MB\))?\.',
+ );
@override
void verifyBuildOutput(List<String> stdout) {
@@ -185,6 +188,25 @@
_buildOutput.hasMatch,
'Building Windows application...',
);
+
+ final String buildMode = release ? 'Release' : 'Debug';
+ _findNextMatcherInList(
+ stdout,
+ (String line) {
+ if (!_builtOutput.hasMatch(line) || !line.contains(buildMode)) {
+ return false;
+ }
+
+ // Size information is only included in release builds.
+ final bool hasSize = line.contains('MB).');
+ if (release != hasSize) {
+ return false;
+ }
+
+ return true;
+ },
+ 'Built build\\windows\\runner\\$buildMode\\app.exe',
+ );
}
}
diff --git a/packages/flutter_tools/lib/src/windows/build_windows.dart b/packages/flutter_tools/lib/src/windows/build_windows.dart
index c0a01b4..e696c98 100644
--- a/packages/flutter_tools/lib/src/windows/build_windows.dart
+++ b/packages/flutter_tools/lib/src/windows/build_windows.dart
@@ -8,6 +8,7 @@
import '../base/file_system.dart';
import '../base/logger.dart';
import '../base/project_migrator.dart';
+import '../base/terminal.dart';
import '../base/utils.dart';
import '../build_info.dart';
import '../cache.dart';
@@ -92,6 +93,23 @@
} finally {
status.stop();
}
+
+ final String? binaryName = getCmakeExecutableName(windowsProject);
+ final File appFile = buildDirectory
+ .childDirectory('runner')
+ .childDirectory(sentenceCase(buildModeName))
+ .childFile('$binaryName.exe');
+ if (appFile.existsSync()) {
+ final String appSize = (buildInfo.mode == BuildMode.debug)
+ ? '' // Don't display the size when building a debug variant.
+ : ' (${getSizeAsMB(appFile.lengthSync())})';
+ globals.logger.printStatus(
+ '${globals.logger.terminal.successMark} '
+ 'Built ${globals.fs.path.relative(appFile.path)}$appSize.',
+ color: TerminalColor.green,
+ );
+ }
+
if (buildInfo.codeSizeDirectory != null && sizeAnalyzer != null) {
final String arch = getNameForTargetPlatform(TargetPlatform.windows_x64);
final File codeSizeFile = globals.fs.directory(buildInfo.codeSizeDirectory)