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.
This commit is contained in:
Camille Simon 2025-10-28 13:38:27 -05:00 committed by GitHub
parent 6c0f1cf328
commit 5397ea8ee2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -19,8 +19,11 @@ import org.gradle.api.Plugin
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 @@ class FlutterPlugin : Plugin<Project> {
repositories.maven {
url = uri(repository!!)
}
maybeAddAndroidStudioNativeConfiguration(plugins, dependencies)
}
project.apply {
@ -325,19 +329,23 @@ class FlutterPlugin : Plugin<Project> {
}
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 @@ class FlutterPlugin : Plugin<Project> {
* 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")
}
}
}