diff --git a/packages/flutter_tools/gradle/flutter.gradle b/packages/flutter_tools/gradle/flutter.gradle index 202e37b7ca..0087dc8b42 100644 --- a/packages/flutter_tools/gradle/flutter.gradle +++ b/packages/flutter_tools/gradle/flutter.gradle @@ -372,17 +372,28 @@ class FlutterPlugin implements Plugin { } private Properties getPluginList() { - File pluginsFile = new File(project.projectDir.parentFile.parentFile, '.flutter-plugins') - Properties allPlugins = readPropertiesIfExist(pluginsFile) + Properties androidPlugins = new Properties() - allPlugins.each { name, path -> - if (doesSupportAndroidPlatform(path)) { - androidPlugins.setProperty(name, path) - } - // TODO(amirh): log an error if this plugin was specified to be an Android - // plugin according to the new schema, and was missing a build.gradle file. - // https://github.com/flutter/flutter/issues/40784 + + def flutterProjectRoot = project.projectDir.parentFile.parentFile + def pluginsFile = new File(flutterProjectRoot, '.flutter-plugins-dependencies') + if (!pluginsFile.exists()) { + return androidPlugins } + + def object = new JsonSlurper().parseText(pluginsFile.text) + assert object instanceof Map + assert object.plugins instanceof Map + assert object.plugins.android instanceof List + // Includes the Flutter plugins that support the Android platform. + object.plugins.android.each { androidPlugin -> + assert androidPlugin.name instanceof String + assert androidPlugin.path instanceof String + def pluginDirectory = new File(androidPlugin.path, 'android') + assert pluginDirectory.exists() + androidPlugins.setProperty(androidPlugin.name, androidPlugin.path) + } + return androidPlugins }