diff --git a/packages/flutter_tools/lib/src/android/gradle.dart b/packages/flutter_tools/lib/src/android/gradle.dart index 89032a299df..2e63b8f285b 100644 --- a/packages/flutter_tools/lib/src/android/gradle.dart +++ b/packages/flutter_tools/lib/src/android/gradle.dart @@ -608,6 +608,7 @@ class AndroidGradleBuilder implements AndroidBuilder { fileSystem: _fileSystem, logger: _logger, flutterUsage: _usage, + analytics: _analytics, ); final String archName = androidBuildInfo.targetArchs.single.archName; final BuildInfo buildInfo = androidBuildInfo.buildInfo; diff --git a/packages/flutter_tools/lib/src/base/analyze_size.dart b/packages/flutter_tools/lib/src/base/analyze_size.dart index 73b4ab220bf..02f460d840b 100644 --- a/packages/flutter_tools/lib/src/base/analyze_size.dart +++ b/packages/flutter_tools/lib/src/base/analyze_size.dart @@ -5,6 +5,7 @@ import 'package:archive/archive.dart'; import 'package:archive/archive_io.dart'; import 'package:meta/meta.dart'; +import 'package:unified_analytics/unified_analytics.dart'; import 'package:vm_snapshot_analysis/treemap.dart'; import '../convert.dart'; @@ -20,8 +21,10 @@ class SizeAnalyzer { required FileSystem fileSystem, required Logger logger, required Usage flutterUsage, + required Analytics analytics, Pattern appFilenamePattern = 'libapp.so', }) : _flutterUsage = flutterUsage, + _analytics = analytics, _fileSystem = fileSystem, _logger = logger, _appFilenamePattern = appFilenamePattern; @@ -30,6 +33,7 @@ class SizeAnalyzer { final Logger _logger; final Pattern _appFilenamePattern; final Usage _flutterUsage; + final Analytics _analytics; String? _appFilename; static const String aotSnapshotFileName = 'aot-snapshot.json'; @@ -88,6 +92,7 @@ class SizeAnalyzer { assert(_appFilename != null); CodeSizeEvent(type, flutterUsage: _flutterUsage).send(); + _analytics.send(Event.codeSizeAnalysis(platform: type)); return apkAnalysisJson; } @@ -141,6 +146,7 @@ class SizeAnalyzer { precompilerTrace: json.decode(precompilerTrace.readAsStringSync()) as Map? ?? {}, ); CodeSizeEvent(kind, flutterUsage: _flutterUsage).send(); + _analytics.send(Event.codeSizeAnalysis(platform: kind)); return apkAnalysisJson; } diff --git a/packages/flutter_tools/lib/src/commands/build_ios.dart b/packages/flutter_tools/lib/src/commands/build_ios.dart index 93c1c625e83..5d8f434d14f 100644 --- a/packages/flutter_tools/lib/src/commands/build_ios.dart +++ b/packages/flutter_tools/lib/src/commands/build_ios.dart @@ -680,6 +680,7 @@ abstract class _BuildIOSSubCommand extends BuildSubCommand { fileSystem: globals.fs, logger: globals.logger, flutterUsage: globals.flutterUsage, + analytics: analytics, appFilenamePattern: 'App' ); // Only support 64bit iOS code size analysis. diff --git a/packages/flutter_tools/lib/src/commands/build_linux.dart b/packages/flutter_tools/lib/src/commands/build_linux.dart index dc709fc02b7..08623f373fe 100644 --- a/packages/flutter_tools/lib/src/commands/build_linux.dart +++ b/packages/flutter_tools/lib/src/commands/build_linux.dart @@ -94,6 +94,7 @@ class BuildLinuxCommand extends BuildSubCommand { fileSystem: globals.fs, logger: logger, flutterUsage: globals.flutterUsage, + analytics: analytics, ), needCrossBuild: needCrossBuild, targetPlatform: targetPlatform, diff --git a/packages/flutter_tools/lib/src/commands/build_macos.dart b/packages/flutter_tools/lib/src/commands/build_macos.dart index 091afbdabc3..f3625931675 100644 --- a/packages/flutter_tools/lib/src/commands/build_macos.dart +++ b/packages/flutter_tools/lib/src/commands/build_macos.dart @@ -70,6 +70,7 @@ class BuildMacosCommand extends BuildSubCommand { logger: globals.logger, appFilenamePattern: 'App', flutterUsage: globals.flutterUsage, + analytics: analytics, ), ); return FlutterCommandResult.success(); diff --git a/packages/flutter_tools/lib/src/commands/build_windows.dart b/packages/flutter_tools/lib/src/commands/build_windows.dart index 0c94f53afdb..830d6044800 100644 --- a/packages/flutter_tools/lib/src/commands/build_windows.dart +++ b/packages/flutter_tools/lib/src/commands/build_windows.dart @@ -63,6 +63,7 @@ class BuildWindowsCommand extends BuildSubCommand { logger: globals.logger, appFilenamePattern: 'app.so', flutterUsage: globals.flutterUsage, + analytics: analytics, ), ); return FlutterCommandResult.success(); diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_ios_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_ios_test.dart index c7cd0f27e85..8121ab1fbcd 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_ios_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_ios_test.dart @@ -543,6 +543,9 @@ void main() { expect(usage.events, contains( const TestUsageEvent('code-size-analysis', 'ios'), )); + expect(fakeAnalytics.sentEvents, contains( + Event.codeSizeAnalysis(platform: 'ios') + )); }, overrides: { FileSystem: () => fileSystem, Logger: () => logger, @@ -550,6 +553,7 @@ void main() { Platform: () => macosPlatform, FileSystemUtils: () => FileSystemUtils(fileSystem: fileSystem, platform: macosPlatform), Usage: () => usage, + Analytics: () => fakeAnalytics, XcodeProjectInterpreter: () => FakeXcodeProjectInterpreterWithBuildSettings(), }); diff --git a/packages/flutter_tools/test/general.shard/base/analyze_size_test.dart b/packages/flutter_tools/test/general.shard/base/analyze_size_test.dart index f4dbeb7fd9c..67f3bd5a136 100644 --- a/packages/flutter_tools/test/general.shard/base/analyze_size_test.dart +++ b/packages/flutter_tools/test/general.shard/base/analyze_size_test.dart @@ -8,6 +8,7 @@ import 'package:flutter_tools/src/base/analyze_size.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/reporting/reporting.dart'; +import 'package:unified_analytics/unified_analytics.dart'; import '../../src/common.dart'; @@ -66,6 +67,7 @@ void main() { logger: logger, appFilenamePattern: RegExp(r'lib.*app\.so'), flutterUsage: TestUsage(), + analytics: NoOpAnalytics(), ); final Archive archive = Archive() @@ -150,6 +152,7 @@ void main() { logger: logger, appFilenamePattern: RegExp(r'lib.*app\.so'), flutterUsage: TestUsage(), + analytics: NoOpAnalytics(), ); final Archive archive = Archive() @@ -192,6 +195,7 @@ void main() { logger: logger, appFilenamePattern: RegExp(r'lib.*app\.so'), flutterUsage: TestUsage(), + analytics: NoOpAnalytics(), ); final Directory outputDirectory = fileSystem.directory('example/out/foo.app') @@ -235,6 +239,7 @@ void main() { logger: logger, appFilenamePattern: RegExp(r'lib.*app\.so'), flutterUsage: TestUsage(), + analytics: NoOpAnalytics(), ); final Directory outputDirectory = fileSystem.directory('example/out/foo.app')..createSync(recursive: true);