@@ -31,6 +31,7 @@ import org.gradle.api.tasks.TaskAction
31
31
import org.gradle.api.tasks.bundling.Jar
32
32
import org.gradle.internal.os.OperatingSystem
33
33
import org.gradle.util.VersionNumber
34
+ import org.yaml.snakeyaml.Yaml
34
35
35
36
/**
36
37
* For apps only. Provides the flutter extension used in app/build.gradle.
@@ -84,6 +85,7 @@ buildscript {
84
85
// * AGP version constants in packages/flutter_tools/lib/src/android/gradle_utils.dart
85
86
// * AGP version in dependencies block in packages/flutter_tools/gradle/build.gradle.kts
86
87
classpath ' com.android.tools.build:gradle:7.3.0'
88
+ classpath group : ' org.yaml' , name : ' snakeyaml' , version : ' 2.0'
87
89
}
88
90
}
89
91
@@ -1115,6 +1117,26 @@ class FlutterPlugin implements Plugin<Project> {
1115
1117
return
1116
1118
}
1117
1119
Task copyFlutterAssetsTask = addFlutterDeps(variant)
1120
+ copyFlutterAssetsTask. doLast {
1121
+ if (variant. flavorName != null && ! variant. flavorName. isEmpty()) {
1122
+ def outputDir = copyFlutterAssetsTask. destinationDir
1123
+ def shorebirdYamlFile = new File (" ${ outputDir} /flutter_assets/shorebird.yaml" )
1124
+ def flavor = variant. flavorName
1125
+ def shorebirdYaml = new Yaml (). load(shorebirdYamlFile. text)
1126
+ def flavorAppId = shorebirdYaml[' flavors' ][flavor]
1127
+ if (flavorAppId == null ) {
1128
+ throw new GradleException (" Cannot find app_id for ${ flavor} in shorebird.yaml" )
1129
+ }
1130
+ def content = ' app_id: ' + flavorAppId + ' \n ' ;
1131
+ if (shorebirdYaml. containsKey(' base_url' )) {
1132
+ content + = ' base_url: ' + shorebirdYaml[' base_url' ] + ' \n ' ;
1133
+ }
1134
+ if (shorebirdYaml. containsKey(' auto_update' )) {
1135
+ content + = ' auto_update: ' + shorebirdYaml[' auto_update' ] + ' \n ' ;
1136
+ }
1137
+ shorebirdYamlFile. write(content)
1138
+ }
1139
+ }
1118
1140
def variantOutput = variant. outputs. first()
1119
1141
def processResources = variantOutput. hasProperty(" processResourcesProvider" ) ?
1120
1142
variantOutput. processResourcesProvider. get() : variantOutput. processResources
0 commit comments