diff --git a/packages/flutter_tools/test/general.shard/android/gradle_test.dart b/packages/flutter_tools/test/general.shard/android/gradle_test.dart
index 8f13098..3e18716 100644
--- a/packages/flutter_tools/test/general.shard/android/gradle_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/gradle_test.dart
@@ -1618,79 +1618,6 @@
       ProcessManager: () => mockProcessManager,
     });
 
-    testUsingContext('indicates how to consume an AAR when printHowToConsumeAaar is true', () async {
-      final File manifestFile = fs.file('pubspec.yaml');
-      manifestFile.createSync(recursive: true);
-      manifestFile.writeAsStringSync('''
-        flutter:
-          module:
-            androidPackage: com.example.test
-        '''
-      );
-
-      fs.file('.android/gradlew').createSync(recursive: true);
-
-      fs.file('.android/gradle.properties')
-        .writeAsStringSync('irrelevant');
-
-      fs.file('.android/build.gradle')
-        .createSync(recursive: true);
-
-      // Let any process start. Assert after.
-      when(mockProcessManager.run(
-        any,
-        environment: anyNamed('environment'),
-        workingDirectory: anyNamed('workingDirectory'),
-      )).thenAnswer((_) async => ProcessResult(1, 0, '', ''));
-
-      fs.directory('build/outputs/repo').createSync(recursive: true);
-
-      await buildGradleAar(
-        androidBuildInfo: const AndroidBuildInfo(BuildInfo(BuildMode.release, null)),
-        project: FlutterProject.current(),
-        outputDir: fs.directory('build/'),
-        target: '',
-        printHowToConsumeAaar: true,
-      );
-
-      final BufferLogger logger = context.get<Logger>();
-      expect(
-        logger.statusText,
-        contains('Built build/outputs/repo'),
-      );
-      expect(
-        logger.statusText,
-        contains('''
-Consuming the Module
-  1. Open <host>/app/build.gradle
-  2. Ensure you have the repositories configured, otherwise add them:
-
-      repositories {
-        maven {
-            url 'build/outputs/repo'
-        }
-        maven {
-            url 'http://download.flutter.io'
-        }
-      }
-
-  3. Make the host app depend on the release module:
-
-      dependencies {
-        releaseImplementation 'com.example.test:flutter_release:1.0'
-      }
-
-To learn more, visit https://flutter.dev/go/build-aar'''));
-
-    }, overrides: <Type, Generator>{
-      AndroidSdk: () => mockAndroidSdk,
-      AndroidStudio: () => mockAndroidStudio,
-      Cache: () => cache,
-      Platform: () => android,
-      FileSystem: () => fs,
-      ProcessManager: () => mockProcessManager,
-    });
-
     testUsingContext('doesn\'t indicate how to consume an AAR when printHowToConsumeAaar is false', () async {
       final File manifestFile = fs.file('pubspec.yaml');
       manifestFile.createSync(recursive: true);
@@ -1721,9 +1648,8 @@
       await buildGradleAar(
         androidBuildInfo: const AndroidBuildInfo(BuildInfo(BuildMode.release, null)),
         project: FlutterProject.current(),
-        outputDir: fs.directory('build/'),
+        outputDirectory: fs.directory('build/'),
         target: '',
-        printHowToConsumeAaar: false,
       );
 
       final BufferLogger logger = context.get<Logger>();
@@ -1885,9 +1811,8 @@
       await buildGradleAar(
         androidBuildInfo: const AndroidBuildInfo(BuildInfo(BuildMode.release, null)),
         project: FlutterProject.current(),
-        outputDir: fs.directory('build/'),
+        outputDirectory: fs.directory('build/'),
         target: '',
-        printHowToConsumeAaar: false,
       );
 
       final List<String> actualGradlewCall = verify(
@@ -1913,6 +1838,192 @@
       ProcessManager: () => mockProcessManager,
     });
   });
+
+  group('printHowToConsumeAar', () {
+    testUsingContext('stdout contains release, debug and profile', () async {
+      printHowToConsumeAar(
+        buildModes: const <String>{'release', 'debug', 'profile'},
+        androidPackage: 'com.mycompany',
+        repoDirectory: fs.directory('build/'),
+      );
+
+      final BufferLogger logger = context.get<Logger>();
+      expect(
+        logger.statusText,
+        contains(
+          '\n'
+          'Consuming the Module\n'
+          '  1. Open <host>/app/build.gradle\n'
+          '  2. Ensure you have the repositories configured, otherwise add them:\n'
+          '\n'
+          '      repositories {\n'
+          '        maven {\n'
+          '            url \'build/\'\n'
+          '        }\n'
+          '        maven {\n'
+          '            url \'http://download.flutter.io\'\n'
+          '        }\n'
+          '      }\n'
+          '\n'
+          '  3. Make the host app depend on the Flutter module:\n'
+          '\n'
+          '    dependencies {\n'
+          '      releaseImplementation \'com.mycompany:flutter_release:1.0\n'
+          '      debugImplementation \'com.mycompany:flutter_debug:1.0\n'
+          '      profileImplementation \'com.mycompany:flutter_profile:1.0\n'
+          '    }\n'
+          '\n'
+          '\n'
+          '  4. Add the `profile` build type:\n'
+          '\n'
+          '    android {\n'
+          '      buildTypes {\n'
+          '        profile {\n'
+          '          initWith debug\n'
+          '        }\n'
+          '      }\n'
+          '    }\n'
+          '\n'
+          'To learn more, visit https://flutter.dev/go/build-aar\n'
+        )
+      );
+    }, overrides: <Type, Generator>{
+      FileSystem: () => MemoryFileSystem(),
+      Platform: () => fakePlatform('android'),
+      ProcessManager: () => FakeProcessManager.any(),
+    });
+
+    testUsingContext('stdout contains release', () async {
+      printHowToConsumeAar(
+        buildModes: const <String>{'release'},
+        androidPackage: 'com.mycompany',
+        repoDirectory: fs.directory('build/'),
+      );
+
+      final BufferLogger logger = context.get<Logger>();
+      expect(
+        logger.statusText,
+        contains(
+          '\n'
+          'Consuming the Module\n'
+          '  1. Open <host>/app/build.gradle\n'
+          '  2. Ensure you have the repositories configured, otherwise add them:\n'
+          '\n'
+          '      repositories {\n'
+          '        maven {\n'
+          '            url \'build/\'\n'
+          '        }\n'
+          '        maven {\n'
+          '            url \'http://download.flutter.io\'\n'
+          '        }\n'
+          '      }\n'
+          '\n'
+          '  3. Make the host app depend on the Flutter module:\n'
+          '\n'
+          '    dependencies {\n'
+          '      releaseImplementation \'com.mycompany:flutter_release:1.0\n'
+          '    }\n'
+          '\n'
+          'To learn more, visit https://flutter.dev/go/build-aar\n'
+        )
+      );
+    }, overrides: <Type, Generator>{
+      FileSystem: () => MemoryFileSystem(),
+      Platform: () => fakePlatform('android'),
+      ProcessManager: () => FakeProcessManager.any(),
+    });
+
+    testUsingContext('stdout contains debug', () async {
+      printHowToConsumeAar(
+        buildModes: const <String>{'debug'},
+        androidPackage: 'com.mycompany',
+        repoDirectory: fs.directory('build/'),
+      );
+
+      final BufferLogger logger = context.get<Logger>();
+      expect(
+        logger.statusText,
+        contains(
+          '\n'
+          'Consuming the Module\n'
+          '  1. Open <host>/app/build.gradle\n'
+          '  2. Ensure you have the repositories configured, otherwise add them:\n'
+          '\n'
+          '      repositories {\n'
+          '        maven {\n'
+          '            url \'build/\'\n'
+          '        }\n'
+          '        maven {\n'
+          '            url \'http://download.flutter.io\'\n'
+          '        }\n'
+          '      }\n'
+          '\n'
+          '  3. Make the host app depend on the Flutter module:\n'
+          '\n'
+          '    dependencies {\n'
+          '      debugImplementation \'com.mycompany:flutter_debug:1.0\n'
+          '    }\n'
+          '\n'
+          'To learn more, visit https://flutter.dev/go/build-aar\n'
+        )
+      );
+    }, overrides: <Type, Generator>{
+      FileSystem: () => MemoryFileSystem(),
+      Platform: () => fakePlatform('android'),
+      ProcessManager: () => FakeProcessManager.any(),
+    });
+
+    testUsingContext('stdout contains profile', () async {
+      printHowToConsumeAar(
+        buildModes: const <String>{'profile'},
+        androidPackage: 'com.mycompany',
+        repoDirectory: fs.directory('build/'),
+      );
+
+      final BufferLogger logger = context.get<Logger>();
+      expect(
+        logger.statusText,
+        contains(
+          '\n'
+          'Consuming the Module\n'
+          '  1. Open <host>/app/build.gradle\n'
+          '  2. Ensure you have the repositories configured, otherwise add them:\n'
+          '\n'
+          '      repositories {\n'
+          '        maven {\n'
+          '            url \'build/\'\n'
+          '        }\n'
+          '        maven {\n'
+          '            url \'http://download.flutter.io\'\n'
+          '        }\n'
+          '      }\n'
+          '\n'
+          '  3. Make the host app depend on the Flutter module:\n'
+          '\n'
+          '    dependencies {\n'
+          '      profileImplementation \'com.mycompany:flutter_profile:1.0\n'
+          '    }\n'
+          '\n'
+          '\n'
+          '  4. Add the `profile` build type:\n'
+          '\n'
+          '    android {\n'
+          '      buildTypes {\n'
+          '        profile {\n'
+          '          initWith debug\n'
+          '        }\n'
+          '      }\n'
+          '    }\n'
+          '\n'
+          'To learn more, visit https://flutter.dev/go/build-aar\n'
+        )
+      );
+    }, overrides: <Type, Generator>{
+      FileSystem: () => MemoryFileSystem(),
+      Platform: () => fakePlatform('android'),
+      ProcessManager: () => FakeProcessManager.any(),
+    });
+  });
 }
 
 /// Generates a fake app bundle at the location [directoryName]/[fileName].
