Add Android embedding version analytics (#44043)

diff --git a/packages/flutter_tools/test/general.shard/plugins_test.dart b/packages/flutter_tools/test/general.shard/plugins_test.dart
index 59c19c4..0dea334 100644
--- a/packages/flutter_tools/test/general.shard/plugins_test.dart
+++ b/packages/flutter_tools/test/general.shard/plugins_test.dart
@@ -125,22 +125,6 @@
       MockFeatureFlags featureFlags;
       MockXcodeProjectInterpreter xcodeProjectInterpreter;
 
-      const String kAndroidManifestUsingOldEmbedding = '''
-  <manifest>
-      <application>
-      </application>
-  </manifest>
-  ''';
-      const String kAndroidManifestUsingNewEmbedding = '''
-  <manifest>
-      <application>
-          <meta-data
-              android:name="flutterEmbedding"
-              android:value="2" />
-      </application>
-  </manifest>
-  ''';
-
       setUp(() {
         featureFlags = MockFeatureFlags();
         when(featureFlags.isLinuxEnabled).thenReturn(false);
@@ -154,13 +138,7 @@
 
       testUsingContext('Registrant uses old embedding in app project', () async {
         when(flutterProject.isModule).thenReturn(false);
-
-        final File androidManifest = flutterProject.directory
-          .childDirectory('android')
-          .childFile('AndroidManifest.xml')
-          ..createSync(recursive: true)
-          ..writeAsStringSync(kAndroidManifestUsingOldEmbedding);
-        when(androidProject.appManifestFile).thenReturn(androidManifest);
+        when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v1);
 
         await injectPlugins(flutterProject);
 
@@ -179,13 +157,7 @@
 
       testUsingContext('Registrant uses new embedding if app uses new embedding', () async {
         when(flutterProject.isModule).thenReturn(false);
-
-        final File androidManifest = flutterProject.directory
-          .childDirectory('android')
-          .childFile('AndroidManifest.xml')
-          ..createSync(recursive: true)
-          ..writeAsStringSync(kAndroidManifestUsingNewEmbedding);
-        when(androidProject.appManifestFile).thenReturn(androidManifest);
+        when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v2);
 
         await injectPlugins(flutterProject);
 
@@ -204,13 +176,7 @@
 
       testUsingContext('Registrant uses shim for plugins using old embedding if app uses new embedding', () async {
         when(flutterProject.isModule).thenReturn(false);
-
-        final File androidManifest = flutterProject.directory
-          .childDirectory('android')
-          .childFile('AndroidManifest.xml')
-          ..createSync(recursive: true)
-          ..writeAsStringSync(kAndroidManifestUsingNewEmbedding);
-        when(androidProject.appManifestFile).thenReturn(androidManifest);
+        when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v2);
 
         final Directory pluginUsingJavaAndNewEmbeddingDir =
           fs.systemTempDirectory.createTempSync('flutter_plugin_using_java_and_new_embedding_dir.');
@@ -301,13 +267,7 @@
 
       testUsingContext('exits the tool if an app uses the v1 embedding and a plugin only supports the v2 embedding', () async {
         when(flutterProject.isModule).thenReturn(false);
-
-        final File androidManifest = flutterProject.directory
-          .childDirectory('android')
-          .childFile('AndroidManifest.xml')
-          ..createSync(recursive: true)
-          ..writeAsStringSync(kAndroidManifestUsingOldEmbedding);
-        when(androidProject.appManifestFile).thenReturn(androidManifest);
+        when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v1);
 
         final Directory pluginUsingJavaAndNewEmbeddingDir =
           fs.systemTempDirectory.createTempSync('flutter_plugin_using_java_and_new_embedding_dir.');
@@ -352,13 +312,7 @@
 
       testUsingContext('allows app use a plugin that supports v1 and v2 embedding', () async {
         when(flutterProject.isModule).thenReturn(false);
-
-        final File androidManifest = flutterProject.directory
-          .childDirectory('android')
-          .childFile('AndroidManifest.xml')
-          ..createSync(recursive: true)
-          ..writeAsStringSync(kAndroidManifestUsingOldEmbedding);
-        when(androidProject.appManifestFile).thenReturn(androidManifest);
+        when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v1);
 
         final Directory pluginUsingJavaAndNewEmbeddingDir =
           fs.systemTempDirectory.createTempSync('flutter_plugin_using_java_and_new_embedding_dir.');
@@ -406,13 +360,7 @@
 
       testUsingContext('Registrant doesn\'t use new embedding if app doesn\'t use new embedding', () async {
         when(flutterProject.isModule).thenReturn(false);
-
-        final File androidManifest = flutterProject.directory
-          .childDirectory('android')
-          .childFile('AndroidManifest.xml')
-          ..createSync(recursive: true)
-          ..writeAsStringSync(kAndroidManifestUsingOldEmbedding);
-        when(androidProject.appManifestFile).thenReturn(androidManifest);
+        when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v1);
 
         await injectPlugins(flutterProject);
 
@@ -431,13 +379,7 @@
 
       testUsingContext('Registrant uses old embedding in module project', () async {
         when(flutterProject.isModule).thenReturn(true);
-
-        final File androidManifest = flutterProject.directory
-          .childDirectory('android')
-          .childFile('AndroidManifest.xml')
-          ..createSync(recursive: true)
-          ..writeAsStringSync(kAndroidManifestUsingOldEmbedding);
-        when(androidProject.appManifestFile).thenReturn(androidManifest);
+        when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v1);
 
         await injectPlugins(flutterProject);
 
@@ -456,13 +398,7 @@
 
       testUsingContext('Registrant uses new embedding if module uses new embedding', () async {
         when(flutterProject.isModule).thenReturn(true);
-
-        final File androidManifest = flutterProject.directory
-          .childDirectory('android')
-          .childFile('AndroidManifest.xml')
-          ..createSync(recursive: true)
-          ..writeAsStringSync(kAndroidManifestUsingNewEmbedding);
-        when(androidProject.appManifestFile).thenReturn(androidManifest);
+        when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v2);
 
         await injectPlugins(flutterProject);
 
@@ -481,13 +417,7 @@
 
       testUsingContext('Registrant doesn\'t use new embedding if module doesn\'t use new embedding', () async {
         when(flutterProject.isModule).thenReturn(true);
-
-        final File androidManifest = flutterProject.directory
-          .childDirectory('android')
-          .childFile('AndroidManifest.xml')
-          ..createSync(recursive: true)
-          ..writeAsStringSync(kAndroidManifestUsingOldEmbedding);
-        when(androidProject.appManifestFile).thenReturn(androidManifest);
+        when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v1);
 
         await injectPlugins(flutterProject);
 
@@ -522,14 +452,6 @@
         when(flutterProject.isModule).thenReturn(true);
         when(featureFlags.isWebEnabled).thenReturn(true);
 
-        // injectPlugins will crash if there is no AndroidManifest
-        final File androidManifest = flutterProject.directory
-          .childDirectory('android')
-          .childFile('AndroidManifest.xml')
-          ..createSync(recursive: true)
-          ..writeAsStringSync(kAndroidManifestUsingOldEmbedding);
-        when(androidProject.appManifestFile).thenReturn(androidManifest);
-
         final Directory webPluginWithNestedFile =
             fs.systemTempDirectory.createTempSync('web_plugin_with_nested');
         webPluginWithNestedFile.childFile('pubspec.yaml').writeAsStringSync('''