Change meaning of a plugin not supporting the android platform (#47015)

diff --git a/packages/flutter_tools/gradle/flutter.gradle b/packages/flutter_tools/gradle/flutter.gradle
index e852f2f..af611b6 100644
--- a/packages/flutter_tools/gradle/flutter.gradle
+++ b/packages/flutter_tools/gradle/flutter.gradle
@@ -331,15 +331,24 @@
         }
     }
 
+    // Returns `true` if the given path contains an `android/build.gradle` file.
+    //
+    // TODO(egarciad): Fix https://github.com/flutter/flutter/issues/39657.
+    // Android Studio may create empty android directories due to the logic in <app>/android/settings.gradle,
+    // which imports all plugins regardless of whether they support the android platform.
+    private Boolean doesSupportAndroidPlatform(String path) {
+        File editableAndroidProject = new File(path, 'android' + File.separator + 'build.gradle')
+        return editableAndroidProject.exists()
+    }
+
     // Add the dependencies on other plugin projects to the plugin project.
     // A plugin A can depend on plugin B. As a result, this dependency must be surfaced by
     // making the Gradle plugin project A depend on the Gradle plugin project B.
     private void configurePluginDependencies(Object dependencyObject) {
         assert dependencyObject.name instanceof String
         Project pluginProject = project.rootProject.findProject(":${dependencyObject.name}")
-        if (pluginProject == null) {
-            // Ignore plugins that don't have a project since most likely they don't
-            // have an android/ directory.
+        if (pluginProject == null ||
+            !doesSupportAndroidPlatform(pluginProject.projectDir.parentFile.path)) {
             return
         }
         assert dependencyObject.dependencies instanceof List
@@ -349,7 +358,8 @@
                 return
             }
             Project dependencyProject = project.rootProject.findProject(":$pluginDependencyName")
-            if (!dependencyProject.projectDir.exists() || dependencyProject == null) {
+            if (dependencyProject == null ||
+                !doesSupportAndroidPlatform(dependencyProject.projectDir.parentFile.path)) {
                 return
             }
             // Wait for the Android plugin to load and add the dependency to the plugin project.
@@ -366,8 +376,7 @@
         Properties allPlugins = readPropertiesIfExist(pluginsFile)
         Properties androidPlugins = new Properties()
         allPlugins.each { name, path ->
-            File editableAndroidProject = new File(path, 'android' + File.separator + 'build.gradle')
-            if (editableAndroidProject.exists()) {
+            if (doesSupportAndroidPlatform(path)) {
                 androidPlugins.setProperty(name, path)
             }
             // TODO(amirh): log an error if this plugin was specified to be an Android
diff --git a/packages/flutter_tools/lib/src/android/gradle.dart b/packages/flutter_tools/lib/src/android/gradle.dart
index 6bfd93c..23a1c47 100644
--- a/packages/flutter_tools/lib/src/android/gradle.dart
+++ b/packages/flutter_tools/lib/src/android/gradle.dart
@@ -716,8 +716,9 @@
     assert(pluginDirectory.existsSync());
 
     final String pluginName = pluginParts.first;
-    if (!pluginDirectory.childDirectory('android').existsSync()) {
-      printTrace('Skipping plugin $pluginName since it doesn\'t have an android directory');
+    final File buildGradleFile = pluginDirectory.childDirectory('android').childFile('build.gradle');
+    if (!buildGradleFile.existsSync()) {
+      printTrace('Skipping plugin $pluginName since it doesn\'t have a android/build.gradle file');
       continue;
     }
     logger.printStatus('Building plugin $pluginName...');
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 c491441..1c026bf 100644
--- a/packages/flutter_tools/test/general.shard/android/gradle_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/gradle_test.dart
@@ -897,7 +897,10 @@
     androidPackage: irrelevant
 ''');
 
-      plugin1.childDirectory('android').createSync();
+      plugin1
+        .childDirectory('android')
+        .childFile('build.gradle')
+        .createSync(recursive: true);
 
       final Directory plugin2 = fs.directory('plugin2.');
       plugin2
@@ -910,7 +913,10 @@
     androidPackage: irrelevant
 ''');
 
-      plugin2.childDirectory('android').createSync();
+      plugin2
+        .childDirectory('android')
+        .childFile('build.gradle')
+        .createSync(recursive: true);
 
       androidDirectory
         .childFile('.flutter-plugins')
@@ -976,7 +982,7 @@
       GradleUtils: () => FakeGradleUtils(),
     });
 
-    testUsingContext('skips plugin without an android directory', () async {
+    testUsingContext('skips plugin without a android/build.gradle file', () async {
       final Directory androidDirectory = fs.directory('android.');
       androidDirectory.createSync();
       androidDirectory
@@ -999,6 +1005,10 @@
         .writeAsStringSync('''
 plugin1=${plugin1.path}
 ''');
+      // Create an empty android directory.
+      // https://github.com/flutter/flutter/issues/46898
+      plugin1.childDirectory('android').createSync();
+
       final Directory buildDirectory = androidDirectory.childDirectory('build');
 
       buildDirectory