diff --git a/packages/flutter_tools/gradle/flutter.gradle b/packages/flutter_tools/gradle/flutter.gradle index 99063f3d0f4e9..8054d80f10d42 100644 --- a/packages/flutter_tools/gradle/flutter.gradle +++ b/packages/flutter_tools/gradle/flutter.gradle @@ -26,6 +26,7 @@ import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.bundling.Jar import org.gradle.internal.os.OperatingSystem import org.gradle.util.VersionNumber +import org.yaml.snakeyaml.Yaml /** For apps only. Provides the flutter extension used in app/build.gradle. */ class FlutterExtension { @@ -63,6 +64,7 @@ buildscript { dependencies { /* When bumping, also update ndkVersion above. */ classpath 'com.android.tools.build:gradle:7.3.0' + classpath group: 'org.yaml', name: 'snakeyaml', version: '2.0' } } @@ -969,6 +971,24 @@ class FlutterPlugin implements Plugin { return } Task copyFlutterAssetsTask = addFlutterDeps(variant) + copyFlutterAssetsTask.doLast { + if (variant.flavorName != null && !variant.flavorName.isEmpty()) { + def outputDir = copyFlutterAssetsTask.destinationDir + def shorebirdYamlFile = new File("${outputDir}/flutter_assets/shorebird.yaml") + def flavor = variant.flavorName + def shorebirdYaml = new Yaml().load(shorebirdYamlFile.text) + def flavorAppId = shorebirdYaml['app_id'][flavor] + if (flavorAppId == null) { + throw new GradleException("Cannot find app_id for ${flavor} in shorebird.yaml") + } + def content = 'app_id: ' + flavorAppId + '\n'; + if (shorebirdYaml.containsKey('base_url')) { + content += 'base_url: ' + shorebirdYaml['base_url'] + '\n'; + } + + shorebirdYamlFile.write(content) + } + } def variantOutput = variant.outputs.first() def processResources = variantOutput.hasProperty("processResourcesProvider") ? variantOutput.processResourcesProvider.get() : variantOutput.processResources