Revert "[CP-beta]Revert "Resolve resolve native Flutter dependencies in Android Studio (#167332)"" (#177601)
Reverts flutter/flutter#177255. This pull request was to the wrong branch. Should have been flutter-3.38-candidate.0.
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")
+ }
+ }
}