@@ -21,7 +21,7 @@ import '../build_info.dart';
2121import '../cache.dart' ;
2222import '../convert.dart' ;
2323import '../flutter_manifest.dart' ;
24- import '../globals.dart' as globals;
24+ import '../globals.dart' as globals hide logger, printStatus, printTrace, printError ;
2525import '../project.dart' ;
2626import '../reporting/reporting.dart' ;
2727import 'android_builder.dart' ;
@@ -136,8 +136,8 @@ Future<File> getGradleAppOut(AndroidProject androidProject) async {
136136
137137/// Runs `gradlew dependencies` , ensuring that dependencies are resolved and
138138/// potentially downloaded.
139- Future <void > checkGradleDependencies () async {
140- final Status progress = globals. logger.startProgress (
139+ Future <void > checkGradleDependencies (Logger logger ) async {
140+ final Status progress = logger.startProgress (
141141 'Ensuring gradle dependencies are up to date...' ,
142142 );
143143 final FlutterProject flutterProject = FlutterProject .current ();
@@ -157,7 +157,7 @@ Future<void> checkGradleDependencies() async {
157157/// from the existing `settings.gradle` file. This operation will fail if the existing
158158/// `settings.gradle` file has local edits.
159159@visibleForTesting
160- void createSettingsAarGradle (Directory androidDirectory) {
160+ void createSettingsAarGradle (Directory androidDirectory, Logger logger ) {
161161 final File newSettingsFile = androidDirectory.childFile ('settings_aar.gradle' );
162162 if (newSettingsFile.existsSync ()) {
163163 return ;
@@ -169,7 +169,7 @@ void createSettingsAarGradle(Directory androidDirectory) {
169169 final String currentFileContent = currentSettingsFile.readAsStringSync ();
170170
171171 final String newSettingsRelativeFile = globals.fs.path.relative (newSettingsFile.path);
172- final Status status = globals. logger.startProgress ('✏️ Creating `$newSettingsRelativeFile `...' );
172+ final Status status = logger.startProgress ('✏️ Creating `$newSettingsRelativeFile `...' );
173173
174174 final String flutterRoot = globals.fs.path.absolute (Cache .flutterRoot);
175175 final File legacySettingsDotGradleFiles = globals.fs.file (globals.fs.path.join (flutterRoot, 'packages' ,'flutter_tools' ,
@@ -191,20 +191,26 @@ void createSettingsAarGradle(Directory androidDirectory) {
191191 }
192192 if (! exactMatch) {
193193 status.cancel ();
194- globals .printStatus ('$warningMark Flutter tried to create the file `$newSettingsRelativeFile `, but failed.' );
194+ logger .printStatus ('$warningMark Flutter tried to create the file `$newSettingsRelativeFile `, but failed.' );
195195 // Print how to manually update the file.
196- globals .printStatus (globals.fs.file (globals.fs.path.join (flutterRoot, 'packages' ,'flutter_tools' ,
196+ logger .printStatus (globals.fs.file (globals.fs.path.join (flutterRoot, 'packages' ,'flutter_tools' ,
197197 'gradle' , 'manual_migration_settings.gradle.md' )).readAsStringSync ());
198198 throwToolExit ('Please create the file and run this command again.' );
199199 }
200200 // Copy the new file.
201201 newSettingsFile.writeAsStringSync (settingsAarContent);
202202 status.stop ();
203- globals .printStatus ('$successMark `$newSettingsRelativeFile ` created successfully.' );
203+ logger .printStatus ('$successMark `$newSettingsRelativeFile ` created successfully.' );
204204}
205205
206206/// An implementation of the [AndroidBuilder] that delegates to gradle.
207207class AndroidGradleBuilder implements AndroidBuilder {
208+ AndroidGradleBuilder ({
209+ @required Logger logger,
210+ }) : _logger = logger;
211+
212+ final Logger _logger;
213+
208214 /// Builds the AAR and POM files for the current Flutter module or plugin.
209215 @override
210216 Future <void > buildAar ({
@@ -238,7 +244,7 @@ class AndroidGradleBuilder implements AndroidBuilder {
238244 androidPackage: project.manifest.androidPackage,
239245 repoDirectory: getRepoDirectory (outputDirectory),
240246 buildNumber: buildNumber,
241- logger: globals.logger ,
247+ logger: _logger ,
242248 fileSystem: globals.fs,
243249 );
244250 } finally {
@@ -326,8 +332,8 @@ class AndroidGradleBuilder implements AndroidBuilder {
326332 BuildEvent ('app-using-android-x' , flutterUsage: globals.flutterUsage).send ();
327333 } else if (! usesAndroidX) {
328334 BuildEvent ('app-not-using-android-x' , flutterUsage: globals.flutterUsage).send ();
329- globals .printStatus ("$warningMark Your app isn't using AndroidX." , emphasis: true );
330- globals .printStatus (
335+ _logger .printStatus ("$warningMark Your app isn't using AndroidX." , emphasis: true );
336+ _logger .printStatus (
331337 'To avoid potential build failures, you can quickly migrate your app '
332338 'by following the steps on https://goo.gl/CP92wY .' ,
333339 indent: 4 ,
@@ -339,7 +345,7 @@ class AndroidGradleBuilder implements AndroidBuilder {
339345
340346 if (shouldBuildPluginAsAar) {
341347 // Create a settings.gradle that doesn't import the plugins as subprojects.
342- createSettingsAarGradle (project.android.hostAppGradleRoot);
348+ createSettingsAarGradle (project.android.hostAppGradleRoot, _logger );
343349 await buildPluginsAsAar (
344350 project,
345351 androidBuildInfo,
@@ -352,15 +358,15 @@ class AndroidGradleBuilder implements AndroidBuilder {
352358 ? getBundleTaskFor (buildInfo)
353359 : getAssembleTaskFor (buildInfo);
354360
355- final Status status = globals.logger .startProgress (
361+ final Status status = _logger .startProgress (
356362 "Running Gradle task '$assembleTask '..." ,
357363 multilineOutput: true ,
358364 );
359365
360366 final List <String > command = < String > [
361367 gradleUtils.getExecutable (project),
362368 ];
363- if (globals.logger .isVerbose) {
369+ if (_logger .isVerbose) {
364370 command.add ('-Pverbose=true' );
365371 } else {
366372 command.add ('-q' );
@@ -374,7 +380,7 @@ class AndroidGradleBuilder implements AndroidBuilder {
374380 engineOutPath: localEngineArtifacts.engineOutPath,
375381 androidBuildInfo: androidBuildInfo,
376382 );
377- globals .printTrace (
383+ _logger .printTrace (
378384 'Using local engine: ${localEngineArtifacts .engineOutPath }\n '
379385 'Local Maven repo: ${localEngineRepo .path }'
380386 );
@@ -528,7 +534,7 @@ class AndroidGradleBuilder implements AndroidBuilder {
528534 await _performCodeSizeAnalysis ('aab' , bundleFile, androidBuildInfo);
529535 }
530536
531- globals .printStatus (
537+ _logger .printStatus (
532538 '$successMark Built ${globals .fs .path .relative (bundleFile .path )}$appSize .' ,
533539 color: TerminalColor .green,
534540 );
@@ -552,15 +558,15 @@ class AndroidGradleBuilder implements AndroidBuilder {
552558 apkFile.copySync (apkDirectory
553559 .childFile ('app.apk' )
554560 .path);
555- globals .printTrace ('calculateSha: $apkDirectory /app.apk' );
561+ _logger .printTrace ('calculateSha: $apkDirectory /app.apk' );
556562
557563 final File apkShaFile = apkDirectory.childFile ('app.apk.sha1' );
558564 apkShaFile.writeAsStringSync (_calculateSha (apkFile));
559565
560566 final String appSize = (buildInfo.mode == BuildMode .debug)
561567 ? '' // Don't display the size when building a debug variant.
562568 : ' (${getSizeAsMB (apkFile .lengthSync ())})' ;
563- globals .printStatus (
569+ _logger .printStatus (
564570 '$successMark Built ${globals .fs .path .relative (apkFile .path )}$appSize .' ,
565571 color: TerminalColor .green,
566572 );
@@ -575,7 +581,7 @@ class AndroidGradleBuilder implements AndroidBuilder {
575581 AndroidBuildInfo androidBuildInfo,) async {
576582 final SizeAnalyzer sizeAnalyzer = SizeAnalyzer (
577583 fileSystem: globals.fs,
578- logger: globals.logger ,
584+ logger: _logger ,
579585 flutterUsage: globals.flutterUsage,
580586 );
581587 final String archName = getNameForAndroidArch (androidBuildInfo.targetArchs.single);
@@ -597,7 +603,7 @@ class AndroidGradleBuilder implements AndroidBuilder {
597603 )
598604 ..writeAsStringSync (jsonEncode (output));
599605 // This message is used as a sentinel in analyze_apk_size_test.dart
600- globals .printStatus (
606+ _logger .printStatus (
601607 'A summary of your ${kind .toUpperCase ()} analysis can be found at: ${outputFile .path }' ,
602608 );
603609
@@ -606,7 +612,7 @@ class AndroidGradleBuilder implements AndroidBuilder {
606612 .split ('.flutter-devtools/' )
607613 .last
608614 .trim ();
609- globals .printStatus (
615+ _logger .printStatus (
610616 '\n To analyze your app size in Dart DevTools, run the following command:\n '
611617 'flutter pub global activate devtools; flutter pub global run devtools '
612618 '--appSizeBase=$relativeAppSizePath '
@@ -639,7 +645,7 @@ class AndroidGradleBuilder implements AndroidBuilder {
639645
640646 final BuildInfo buildInfo = androidBuildInfo.buildInfo;
641647 final String aarTask = getAarTaskFor (buildInfo);
642- final Status status = globals.logger .startProgress (
648+ final Status status = _logger .startProgress (
643649 "Running Gradle task '$aarTask '..." ,
644650 multilineOutput: true ,
645651 );
@@ -660,7 +666,7 @@ class AndroidGradleBuilder implements AndroidBuilder {
660666 '-Pis-plugin=${manifest .isPlugin }' ,
661667 '-PbuildNumber=$buildNumber '
662668 ];
663- if (globals.logger .isVerbose) {
669+ if (_logger .isVerbose) {
664670 command.add ('-Pverbose=true' );
665671 } else {
666672 command.add ('-q' );
@@ -674,7 +680,7 @@ class AndroidGradleBuilder implements AndroidBuilder {
674680 }
675681 command.addAll (androidBuildInfo.buildInfo.toGradleConfig ());
676682 if (buildInfo.dartObfuscation && buildInfo.mode != BuildMode .release) {
677- globals .printStatus (
683+ _logger .printStatus (
678684 'Dart obfuscation is not supported in ${toTitleCase (buildInfo .friendlyModeName )}'
679685 ' mode, building as un-obfuscated.' ,
680686 );
@@ -686,9 +692,9 @@ class AndroidGradleBuilder implements AndroidBuilder {
686692 engineOutPath: localEngineArtifacts.engineOutPath,
687693 androidBuildInfo: androidBuildInfo,
688694 );
689- globals .printTrace (
690- 'Using local engine: ${localEngineArtifacts .engineOutPath }\n '
691- 'Local Maven repo: ${localEngineRepo .path }'
695+ _logger .printTrace (
696+ 'Using local engine: ${localEngineArtifacts .engineOutPath }\n '
697+ 'Local Maven repo: ${localEngineRepo .path }'
692698 );
693699 command.add ('-Plocal-engine-repo=${localEngineRepo .path }' );
694700 command.add ('-Plocal-engine-build-mode=${buildInfo .modeName }' );
@@ -732,23 +738,23 @@ class AndroidGradleBuilder implements AndroidBuilder {
732738 globals.flutterUsage.sendTiming ('build' , 'gradle-aar' , sw.elapsed);
733739
734740 if (result.exitCode != 0 ) {
735- globals .printStatus (result.stdout, wrap: false );
736- globals .printError (result.stderr, wrap: false );
741+ _logger .printStatus (result.stdout, wrap: false );
742+ _logger .printError (result.stderr, wrap: false );
737743 throwToolExit (
738744 'Gradle task $aarTask failed with exit code ${result .exitCode }.' ,
739745 exitCode: result.exitCode,
740746 );
741747 }
742748 final Directory repoDirectory = getRepoDirectory (outputDirectory);
743749 if (! repoDirectory.existsSync ()) {
744- globals .printStatus (result.stdout, wrap: false );
745- globals .printError (result.stderr, wrap: false );
750+ _logger .printStatus (result.stdout, wrap: false );
751+ _logger .printError (result.stderr, wrap: false );
746752 throwToolExit (
747753 'Gradle task $aarTask failed to produce $repoDirectory .' ,
748754 exitCode: exitCode,
749755 );
750756 }
751- globals .printStatus (
757+ _logger .printStatus (
752758 '$successMark Built ${globals .fs .path .relative (repoDirectory .path )}.' ,
753759 color: TerminalColor .green,
754760 );
@@ -777,10 +783,10 @@ class AndroidGradleBuilder implements AndroidBuilder {
777783 final String pluginName = pluginParts.first;
778784 final File buildGradleFile = pluginDirectory.childDirectory ('android' ).childFile ('build.gradle' );
779785 if (! buildGradleFile.existsSync ()) {
780- globals .printTrace ("Skipping plugin $pluginName since it doesn't have a android/build.gradle file" );
786+ _logger .printTrace ("Skipping plugin $pluginName since it doesn't have a android/build.gradle file" );
781787 continue ;
782788 }
783- globals.logger .printStatus ('Building plugin $pluginName ...' );
789+ _logger .printStatus ('Building plugin $pluginName ...' );
784790 try {
785791 await buildGradleAar (
786792 project: FlutterProject .fromDirectory (pluginDirectory),
@@ -876,15 +882,8 @@ String _hex(List<int> bytes) {
876882}
877883
878884String _calculateSha (File file) {
879- final Stopwatch sw = Stopwatch ()..start ();
880885 final List <int > bytes = file.readAsBytesSync ();
881- globals.printTrace ('calculateSha: reading file took ${sw .elapsedMilliseconds }us' );
882- globals.flutterUsage.sendTiming ('build' , 'apk-sha-read' , sw.elapsed);
883- sw.reset ();
884- final String sha = _hex (sha1.convert (bytes).bytes);
885- globals.printTrace ('calculateSha: computing sha took ${sw .elapsedMilliseconds }us' );
886- globals.flutterUsage.sendTiming ('build' , 'apk-sha-calc' , sw.elapsed);
887- return sha;
886+ return _hex (sha1.convert (bytes).bytes);
888887}
889888
890889void _exitWithUnsupportedProjectMessage () {
0 commit comments