diff --git a/packages/flutter_tools/gradle/src/main/kotlin/FlutterPlugin.kt b/packages/flutter_tools/gradle/src/main/kotlin/FlutterPlugin.kt
index d6fc07c..34dc19a 100644
--- a/packages/flutter_tools/gradle/src/main/kotlin/FlutterPlugin.kt
+++ b/packages/flutter_tools/gradle/src/main/kotlin/FlutterPlugin.kt
@@ -19,8 +19,11 @@
 import org.gradle.api.Project
 import org.gradle.api.Task
 import org.gradle.api.UnknownTaskException
+import org.gradle.api.artifacts.dsl.DependencyHandler
 import org.gradle.api.file.Directory
+import org.gradle.api.plugins.PluginContainer
 import org.gradle.api.tasks.Copy
+import org.gradle.api.tasks.TaskInstantiationException
 import org.gradle.api.tasks.TaskProvider
 import org.gradle.api.tasks.bundling.Jar
 import org.gradle.internal.os.OperatingSystem
@@ -98,6 +101,7 @@
             repositories.maven {
                 url = uri(repository!!)
             }
+            maybeAddAndroidStudioNativeConfiguration(plugins, dependencies)
         }
 
         project.apply {
@@ -325,19 +329,23 @@
     }
 
     private fun addTaskForLockfileGeneration(rootProject: Project) {
-        rootProject.tasks.register("generateLockfiles") {
-            doLast {
-                rootProject.subprojects.forEach { subproject ->
-                    val gradlew: String =
-                        getExecutableNameForPlatform("${rootProject.projectDir}/gradlew")
-                    val execOps = rootProject.serviceOf<ExecOperations>()
-                    execOps.exec {
-                        workingDir(rootProject.projectDir)
-                        executable(gradlew)
-                        args(":${subproject.name}:dependencies", "--write-locks")
+        try {
+            rootProject.tasks.register("generateLockfiles") {
+                doLast {
+                    rootProject.subprojects.forEach { subproject ->
+                        val gradlew: String =
+                            getExecutableNameForPlatform("${rootProject.projectDir}/gradlew")
+                        val execOps = rootProject.serviceOf<ExecOperations>()
+                        execOps.exec {
+                            workingDir(rootProject.projectDir)
+                            executable(gradlew)
+                            args(":${subproject.name}:dependencies", "--write-locks")
+                        }
                     }
                 }
             }
+        } catch (e: TaskInstantiationException) {
+            // ignored
         }
     }
 
@@ -813,4 +821,19 @@
      * This property is set by Android Studio when it invokes a Gradle task.
      */
     private fun isInvokedFromAndroidStudio(): Boolean = project?.hasProperty("android.injected.invoked.from.ide") == true
+
+    private fun shouldAddAndroidStudioNativeConfiguration(plugins: PluginContainer): Boolean =
+        plugins.hasPlugin("com.android.application") && isInvokedFromAndroidStudio()
+
+    private fun maybeAddAndroidStudioNativeConfiguration(
+        plugins: PluginContainer,
+        dependencies: DependencyHandler
+    ) {
+        if (shouldAddAndroidStudioNativeConfiguration(plugins)) {
+            dependencies.add("compileOnly", "io.flutter:flutter_embedding_debug:$engineVersion")
+            dependencies.add("compileOnly", "io.flutter:armeabi_v7a_debug:$engineVersion")
+            dependencies.add("compileOnly", "io.flutter:arm64_v8a_debug:$engineVersion")
+            dependencies.add("compileOnly", "io.flutter:x86_64_debug:$engineVersion")
+        }
+    }
 }
