private static void UpdateJson()

in editor/app/src/GenerateXmlFromGoogleServicesJson.cs [151:238]


    private static void UpdateJson(bool ignoreModificationDate,
                                   LogMessage logMessageForNoConfigFiles = null,
                                   LogMessage logMessageForMissingBundleId = null) {
      string googleServicesFile = FindGoogleServicesFile(ConfigFileType.Json,
             logMessageForNoConfigFiles: LogNoMessage,
             logMessageForMissingBundleId: LogNoMessage);

      string googleServiceInfoFile = FindGoogleServicesFile(ConfigFileType.Plist,
             logMessageForNoConfigFiles: LogNoMessage,
             logMessageForMissingBundleId: LogNoMessage);

      // Regenerate the XML for Android systems.
      // (Will do nothing if we're not targeting Android.)
      if (googleServicesFile != null) {
        GenerateXmlResources(googleServicesFile, ignoreModificationDate);
      }

      // Here, the script will attempt to generate a google-services-desktop file,
      // based on available package files.  If either a google-services.json file,
      // or a GoogleService-Info.plist file is available, (and has a bundle ID that
      // matches the project) then it will be used to generate the desktop package
      // file.

      // If the project is set to build for Android, the google-services.json file
      // is preferred.  If it is set to build for iOS, the GoogleServices-Info.plist
      // file is preferred.  When set to standalone desktop, it tries to match the
      // current bundleid, and if it can't, it takes any plist/json file it can find.

      bool foundAtLeastOneFile = googleServicesFile != null || googleServiceInfoFile != null;

      if(!foundAtLeastOneFile) {
        // If we didn't find any files, and we're running in the editor (which is a given since
        // we're in an AssetPreprocessor), then try again, except this time we'll just accept
        // anything.
        string desktopFile = FindGoogleServicesFile(ConfigFileType.Any,
               mode: FindGoogleServicesFileMode.ReturnAll,
               logMessageForNoConfigFiles: LogNoMessage,
               logMessageForMissingBundleId: LogNoMessage);
        if (desktopFile != null) {
          foundAtLeastOneFile = true;
          if (IsFileOfType(desktopFile, ConfigFileType.Json)) {
            googleServicesFile = desktopFile;
          } else if (IsFileOfType(desktopFile, ConfigFileType.Plist)) {
            googleServiceInfoFile = desktopFile;
          }
          foundAtLeastOneFile = googleServicesFile != null || googleServiceInfoFile != null;
        }
      }

      if (foundAtLeastOneFile) {
        // Regenerate google-services-desktop file.
        switch (EditorUserBuildSettings.selectedBuildTargetGroup) {
          case BuildTargetGroup.iOS:
            // If we're on iOS, generate the desktop file from the plist, if possible.
            if (googleServiceInfoFile != null) {
              CreateDesktopJsonFromPlist(googleServiceInfoFile);
            } else if (googleServicesFile != null) {
              CreateDesktopJsonFromJson(googleServicesFile);
            }
            break;
          case BuildTargetGroup.Android:
          case BuildTargetGroup.Standalone:
          default:
            // Anywhere else, favor the Android json.
            if (googleServicesFile != null) {
              CreateDesktopJsonFromJson(googleServicesFile);
            } else if (googleServiceInfoFile != null) {
              CreateDesktopJsonFromPlist(googleServiceInfoFile);
            }
            break;
        }
      } else {
        Debug.LogWarning(DocRef.CouldNotFindPlistOrJson);
        if (logMessageForNoConfigFiles != null) {
          Measurement.ReportWithBuildTarget("generateconfig/failed/noconfig", null,
                                            "Config File Missing");
        }
        logMessageForNoConfigFiles = logMessageForNoConfigFiles ?? LogErrorIfEnabled;
        logMessageForNoConfigFiles(
            String.Format(DocRef.GoogleServicesFileBundleIdMissing,
                GetAndroidApplicationId(),
                EditorUserBuildSettings.selectedBuildTargetGroup == BuildTargetGroup.iOS ?
                    "GoogleService-Info.plist" : "google-services.json",
                String.Join("\n", BundleIdsFromBundleIdsByConfigFile(
                    ConfigFileDirectory).ToArray()),
                Link.AndroidAddApp));
      }
    }