diff --git a/dev/integration_tests/release_smoke_test/pubspec.yaml b/dev/integration_tests/release_smoke_test/pubspec.yaml
index 35433cd..b141788 100644
--- a/dev/integration_tests/release_smoke_test/pubspec.yaml
+++ b/dev/integration_tests/release_smoke_test/pubspec.yaml
@@ -17,7 +17,7 @@
   flutter_test:
     sdk: flutter
 
-  instrumentation_adapter: 0.1.3
+  e2e: 0.2.1
 
   archive: 2.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
   args: 1.5.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
@@ -40,4 +40,4 @@
   test_api: 0.2.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
   xml: 3.5.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
 
-# PUBSPEC CHECKSUM: 8361
+# PUBSPEC CHECKSUM: 669f
diff --git a/dev/integration_tests/release_smoke_test/test_adapter/hello_world_test.dart b/dev/integration_tests/release_smoke_test/test_adapter/hello_world_test.dart
index 80690ae..0bd09e0 100644
--- a/dev/integration_tests/release_smoke_test/test_adapter/hello_world_test.dart
+++ b/dev/integration_tests/release_smoke_test/test_adapter/hello_world_test.dart
@@ -4,10 +4,10 @@
 
 import 'package:flutter_test/flutter_test.dart';
 import 'package:release_smoke_test/main.dart' as smoke;
-import 'package:instrumentation_adapter/instrumentation_adapter.dart';
+import 'package:e2e/e2e.dart';
 
 void main() {
-  InstrumentationAdapterFlutterBinding.ensureInitialized();
+  E2EWidgetsFlutterBinding.ensureInitialized();
 
   testWidgets('Hello world smoke test', (WidgetTester tester) async {
     smoke.main(); // builds the app and schedules a frame but doesn't trigger one
diff --git a/packages/flutter_tools/lib/src/platform_plugins.dart b/packages/flutter_tools/lib/src/platform_plugins.dart
index aba2087..cfadd8f 100644
--- a/packages/flutter_tools/lib/src/platform_plugins.dart
+++ b/packages/flutter_tools/lib/src/platform_plugins.dart
@@ -7,7 +7,6 @@
 
 import 'base/common.dart';
 import 'base/file_system.dart';
-import 'features.dart';
 
 /// Marker interface for all platform specific plugin config impls.
 abstract class PluginPlatform {
@@ -75,9 +74,6 @@
   String get _embeddingVersion => _cachedEmbeddingVersion ??= _getEmbeddingVersion();
 
   String _getEmbeddingVersion() {
-    if (!featureFlags.isNewAndroidEmbeddingEnabled) {
-      return '1';
-    }
     assert(pluginPath != null);
     final String baseMainPath = fs.path.join(
       pluginPath,
diff --git a/packages/flutter_tools/lib/src/plugins.dart b/packages/flutter_tools/lib/src/plugins.dart
index b99c3bb..e1ed298 100644
--- a/packages/flutter_tools/lib/src/plugins.dart
+++ b/packages/flutter_tools/lib/src/plugins.dart
@@ -360,9 +360,6 @@
 /// Returns the version of the Android embedding that the current
 /// [project] is using.
 String _getAndroidEmbeddingVersion(FlutterProject project) {
-  if (!featureFlags.isNewAndroidEmbeddingEnabled) {
-    return '1';
-  }
   assert(project.android != null);
   final File androidManifest = project.android.appManifestFile;
   assert(androidManifest.existsSync());
diff --git a/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart b/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart
index b81afb1..7f76b5a 100644
--- a/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart
+++ b/packages/flutter_tools/test/general.shard/macos/cocoapods_test.dart
@@ -273,7 +273,7 @@
         ..writeAsStringSync('Existing release config');
 
       final FlutterProject project = FlutterProject.fromPath('project');
-      await injectPlugins(project);
+      await injectPlugins(project, checkProjects: true);
 
       final String debugContents = projectUnderTest.ios.xcodeConfigFor('Debug').readAsStringSync();
       expect(debugContents, contains(
diff --git a/packages/flutter_tools/test/general.shard/plugins_test.dart b/packages/flutter_tools/test/general.shard/plugins_test.dart
index 270b316..96216ed 100644
--- a/packages/flutter_tools/test/general.shard/plugins_test.dart
+++ b/packages/flutter_tools/test/general.shard/plugins_test.dart
@@ -148,7 +148,13 @@
 
     testUsingContext('Registrant uses old embedding in app project', () async {
       when(flutterProject.isModule).thenReturn(false);
-      when(featureFlags.isNewAndroidEmbeddingEnabled).thenReturn(false);
+
+      final File androidManifest = flutterProject.directory
+        .childDirectory('android')
+        .childFile('AndroidManifest.xml')
+        ..createSync(recursive: true)
+        ..writeAsStringSync(kAndroidManifestUsingOldEmbedding);
+      when(androidProject.appManifestFile).thenReturn(androidManifest);
 
       await injectPlugins(flutterProject);
 
@@ -167,7 +173,6 @@
 
     testUsingContext('Registrant uses new embedding if app uses new embedding', () async {
       when(flutterProject.isModule).thenReturn(false);
-      when(featureFlags.isNewAndroidEmbeddingEnabled).thenReturn(true);
 
       final File androidManifest = flutterProject.directory
         .childDirectory('android')
@@ -193,7 +198,6 @@
 
     testUsingContext('Registrant uses shim for plugins using old embedding if app uses new embedding', () async {
       when(flutterProject.isModule).thenReturn(false);
-      when(featureFlags.isNewAndroidEmbeddingEnabled).thenReturn(true);
 
       final File androidManifest = flutterProject.directory
         .childDirectory('android')
@@ -291,7 +295,6 @@
 
     testUsingContext('Registrant doesn\'t use new embedding if app doesn\'t use new embedding', () async {
       when(flutterProject.isModule).thenReturn(false);
-      when(featureFlags.isNewAndroidEmbeddingEnabled).thenReturn(true);
 
       final File androidManifest = flutterProject.directory
         .childDirectory('android')
@@ -317,7 +320,13 @@
 
     testUsingContext('Registrant uses old embedding in module project', () async {
       when(flutterProject.isModule).thenReturn(true);
-      when(featureFlags.isNewAndroidEmbeddingEnabled).thenReturn(false);
+
+      final File androidManifest = flutterProject.directory
+        .childDirectory('android')
+        .childFile('AndroidManifest.xml')
+        ..createSync(recursive: true)
+        ..writeAsStringSync(kAndroidManifestUsingOldEmbedding);
+      when(androidProject.appManifestFile).thenReturn(androidManifest);
 
       await injectPlugins(flutterProject);
 
@@ -336,7 +345,6 @@
 
     testUsingContext('Registrant uses new embedding if module uses new embedding', () async {
       when(flutterProject.isModule).thenReturn(true);
-      when(featureFlags.isNewAndroidEmbeddingEnabled).thenReturn(true);
 
       final File androidManifest = flutterProject.directory
         .childDirectory('android')
@@ -362,7 +370,6 @@
 
     testUsingContext('Registrant doesn\'t use new embedding if module doesn\'t use new embedding', () async {
       when(flutterProject.isModule).thenReturn(true);
-      when(featureFlags.isNewAndroidEmbeddingEnabled).thenReturn(true);
 
       final File androidManifest = flutterProject.directory
         .childDirectory('android')
diff --git a/packages/flutter_tools/test/general.shard/project_test.dart b/packages/flutter_tools/test/general.shard/project_test.dart
index d629be9..4a250a7 100644
--- a/packages/flutter_tools/test/general.shard/project_test.dart
+++ b/packages/flutter_tools/test/general.shard/project_test.dart
@@ -531,7 +531,12 @@
   final Directory directory = fs.directory('some_project');
   directory.childFile('.packages').createSync(recursive: true);
   directory.childDirectory('ios').createSync(recursive: true);
-  directory.childDirectory('android').createSync(recursive: true);
+  final Directory androidDirectory = directory
+      .childDirectory('android')
+      ..createSync(recursive: true);
+  androidDirectory
+    .childFile('AndroidManifest.xml')
+    .writeAsStringSync('<manifest></manifest>');
   return FlutterProject.fromDirectory(directory);
 }
 
