1717package  com.google.firebase.gradle.plugins 
1818
1919import  com.android.build.gradle.BaseExtension 
20+ import  com.android.build.gradle.internal.tasks.factory.dependsOn 
2021import  java.io.File 
2122import  org.gradle.api.Plugin 
2223import  org.gradle.api.Project 
@@ -26,6 +27,7 @@ import org.gradle.kotlin.dsl.register
2627
2728/* *
2829 * Copies the root google-services.json into the project directory during build time. 
30+  * If the file doesn't exist, a dummy file is created and copied instead 
2931 * 
3032 * If a path is provided via `FIREBASE_GOOGLE_SERVICES_PATH`, that will be used instead. The file 
3133 * will also be renamed to `google-services.json`, so provided files do *not* need to be properly 
@@ -36,6 +38,12 @@ import org.gradle.kotlin.dsl.register
3638abstract  class  CopyGoogleServicesPlugin  : Plugin <Project > {
3739  override  fun  apply (project :  Project ) {
3840    val  copyRootGoogleServices =  registerCopyRootGoogleServicesTask(project)
41+     val  sourcePath = 
42+       System .getenv(" FIREBASE_GOOGLE_SERVICES_PATH"  ) ? :  " ${project.rootDir} /google-services.json" 
43+     if  (! File (project.projectDir, " google-services.json"  ).exists() &&  ! File (sourcePath).exists()) {
44+       val  createDummyGoogleServices =  registerDummyGoogleServicesTask(project, sourcePath)
45+       copyRootGoogleServices.dependsOn(createDummyGoogleServices)
46+     }
3947
4048    project.allprojects {
4149      //  fixes dependencies with gradle tasks that do not properly dependOn `preBuild`
@@ -56,6 +64,38 @@ abstract class CopyGoogleServicesPlugin : Plugin<Project> {
5664    return  gradle.startParameter.taskNames.any { testTasks.any(it::contains) }
5765  }
5866
67+   private   fun  registerDummyGoogleServicesTask (
68+     project :  Project ,
69+     path :  String 
70+   ) =  project.tasks.register(" createRootGoogleServices"  ) {
71+     File (path).writeText(""" 
72+         { 
73+           "project_info": { 
74+             "project_number": "1234567", 
75+             "firebase_url": "https://project-12345.firebaseio.com", 
76+             "project_id": "project-12345", 
77+             "storage_bucket": "project-12345.firebasestorage.app" 
78+           }, 
79+           "client": [ 
80+             { 
81+               "client_info": { 
82+                 "mobilesdk_app_id": "1:1234567:android:12345ffff54321", 
83+                 "android_client_info": { 
84+                   "package_name": "com.example.myapplication" 
85+                 } 
86+               }, 
87+               "api_key": [ 
88+                 { 
89+                   "current_key": "RaNdoMLett3r5aNdNuMb3rS" 
90+                 } 
91+               ] 
92+             } 
93+           ], 
94+           "configuration_version": "1" 
95+         } 
96+     """  .trimIndent())
97+   }
98+ 
5999  private  fun  registerCopyRootGoogleServicesTask (project :  Project ) = 
60100    project.tasks.register<Copy >(" copyRootGoogleServices"  ) {
61101      val  sourcePath = 
0 commit comments