@@ -31,6 +31,7 @@ import org.gradle.api.tasks.TaskAction
3131import org.gradle.api.tasks.bundling.Jar
3232import org.gradle.internal.os.OperatingSystem
3333import org.gradle.util.VersionNumber
34+ import org.yaml.snakeyaml.Yaml
3435
3536/**
3637 * For apps only. Provides the flutter extension used in app/build.gradle.
@@ -84,6 +85,7 @@ buildscript {
8485 // * AGP version constants in packages/flutter_tools/lib/src/android/gradle_utils.dart
8586 // * AGP version in dependencies block in packages/flutter_tools/gradle/build.gradle.kts
8687 classpath ' com.android.tools.build:gradle:7.3.0'
88+ classpath group : ' org.yaml' , name : ' snakeyaml' , version : ' 2.0'
8789 }
8890}
8991
@@ -1115,6 +1117,26 @@ class FlutterPlugin implements Plugin<Project> {
11151117 return
11161118 }
11171119 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+ }
11181140 def variantOutput = variant. outputs. first()
11191141 def processResources = variantOutput. hasProperty(" processResourcesProvider" ) ?
11201142 variantOutput. processResourcesProvider. get() : variantOutput. processResources
0 commit comments