diff --git a/packages/flutter_tools/lib/src/plugins.dart b/packages/flutter_tools/lib/src/plugins.dart index cd7eb4361d..0fb8421606 100644 --- a/packages/flutter_tools/lib/src/plugins.dart +++ b/packages/flutter_tools/lib/src/plugins.dart @@ -497,7 +497,6 @@ Future _writeAndroidPluginRegistrant(FlutterProject project, List 'following https://flutter.dev/go/android-plugin-migration.' ); } - break; } } templateContent = _androidPluginRegistryTemplateNewEmbedding; diff --git a/packages/flutter_tools/test/general.shard/plugins_test.dart b/packages/flutter_tools/test/general.shard/plugins_test.dart index 30b4401873..635d0e92fd 100644 --- a/packages/flutter_tools/test/general.shard/plugins_test.dart +++ b/packages/flutter_tools/test/general.shard/plugins_test.dart @@ -129,7 +129,7 @@ flutter: ); } - void createOldJavaPlugin3() { + void createOldJavaPlugin(String pluginName) { final Directory pluginUsingOldEmbeddingDir = fs.systemTempDirectory.createTempSync('flutter_plugin_using_old_embedding_dir.'); pluginUsingOldEmbeddingDir @@ -137,7 +137,7 @@ flutter: .writeAsStringSync(''' flutter: plugin: - androidPackage: plugin3 + androidPackage: $pluginName pluginClass: UseOldEmbedding '''); pluginUsingOldEmbeddingDir @@ -145,14 +145,14 @@ flutter: .childDirectory('src') .childDirectory('main') .childDirectory('java') - .childDirectory('plugin3') + .childDirectory(pluginName) .childFile('UseOldEmbedding.java') ..createSync(recursive: true); flutterProject.directory .childFile('.packages') .writeAsStringSync( - 'plugin3:${pluginUsingOldEmbeddingDir.childDirectory('lib').uri.toString()}\n', + '$pluginName:${pluginUsingOldEmbeddingDir.childDirectory('lib').uri.toString()}\n', mode: FileMode.append, ); } @@ -379,7 +379,7 @@ dependencies: createNewJavaPlugin1(); createNewKotlinPlugin2(); - createOldJavaPlugin3(); + createOldJavaPlugin('plugin3'); await injectPlugins(flutterProject); @@ -497,7 +497,7 @@ dependencies: when(flutterProject.isModule).thenReturn(true); when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v2); - createOldJavaPlugin3(); + createOldJavaPlugin('plugin3'); await injectPlugins(flutterProject); @@ -558,6 +558,31 @@ dependencies: XcodeProjectInterpreter: () => xcodeProjectInterpreter, }); + testUsingContext('Module using multiple old plugins all show warnings', () async { + when(flutterProject.isModule).thenReturn(true); + when(androidProject.getEmbeddingVersion()).thenReturn(AndroidEmbeddingVersion.v2); + + createOldJavaPlugin('plugin3'); + createOldJavaPlugin('plugin4'); + + await injectPlugins(flutterProject); + + final File registrant = flutterProject.directory + .childDirectory(fs.path.join('android', 'app', 'src', 'main', 'java', 'io', 'flutter', 'plugins')) + .childFile('GeneratedPluginRegistrant.java'); + expect(registrant.readAsStringSync(), + contains('plugin3.UseOldEmbedding.registerWith(shimPluginRegistry.registrarFor("plugin3.UseOldEmbedding"));')); + expect(registrant.readAsStringSync(), + contains('plugin4.UseOldEmbedding.registerWith(shimPluginRegistry.registrarFor("plugin4.UseOldEmbedding"));')); + expect(testLogger.statusText, contains('The plugin `plugin3` is built using an older version of the Android plugin API')); + expect(testLogger.statusText, contains('The plugin `plugin4` is built using an older version of the Android plugin API')); + }, overrides: { + FileSystem: () => fs, + ProcessManager: () => FakeProcessManager.any(), + FeatureFlags: () => featureFlags, + XcodeProjectInterpreter: () => xcodeProjectInterpreter, + }); + testUsingContext('Does not throw when AndroidManifest.xml is not found', () async { when(flutterProject.isModule).thenReturn(false);