@@ -28,6 +28,8 @@ import org.gradle.api.tasks.Optional
2828import org.gradle.api.tasks.TaskAction
2929import org.gradle.api.tasks.bundling.Jar
3030import org.gradle.internal.os.OperatingSystem
31+ import org.gradle.util.VersionNumber
32+ import org.yaml.snakeyaml.Yaml
3133
3234/**
3335 * For apps only. Provides the flutter extension used in app/build.gradle.
@@ -86,6 +88,7 @@ buildscript {
8688 // * AGP version constants in packages/flutter_tools/lib/src/android/gradle_utils.dart
8789 // * AGP version in dependencies block in packages/flutter_tools/gradle/build.gradle.kts
8890 classpath ' com.android.tools.build:gradle:7.3.0'
91+ classpath group : ' org.yaml' , name : ' snakeyaml' , version : ' 2.0'
8992 }
9093}
9194
@@ -1146,6 +1149,26 @@ class FlutterPlugin implements Plugin<Project> {
11461149 return
11471150 }
11481151 Task copyFlutterAssetsTask = addFlutterDeps(variant)
1152+ copyFlutterAssetsTask. doLast {
1153+ if (variant. flavorName != null && ! variant. flavorName. isEmpty()) {
1154+ def outputDir = copyFlutterAssetsTask. destinationDir
1155+ def shorebirdYamlFile = new File (" ${ outputDir} /flutter_assets/shorebird.yaml" )
1156+ def flavor = variant. flavorName
1157+ def shorebirdYaml = new Yaml (). load(shorebirdYamlFile. text)
1158+ def flavorAppId = shorebirdYaml[' flavors' ][flavor]
1159+ if (flavorAppId == null ) {
1160+ throw new GradleException (" Cannot find app_id for ${ flavor} in shorebird.yaml" )
1161+ }
1162+ def content = ' app_id: ' + flavorAppId + ' \n ' ;
1163+ if (shorebirdYaml. containsKey(' base_url' )) {
1164+ content + = ' base_url: ' + shorebirdYaml[' base_url' ] + ' \n ' ;
1165+ }
1166+ if (shorebirdYaml. containsKey(' auto_update' )) {
1167+ content + = ' auto_update: ' + shorebirdYaml[' auto_update' ] + ' \n ' ;
1168+ }
1169+ shorebirdYamlFile. write(content)
1170+ }
1171+ }
11491172 def variantOutput = variant. outputs. first()
11501173 def processResources = variantOutput. hasProperty(" processResourcesProvider" ) ?
11511174 variantOutput. processResourcesProvider. get() : variantOutput. processResources
0 commit comments