public void OnPostGenerateGradleAndroidProject(string path)
        {
            if (!PlayInstantBuildConfiguration.IsInstantBuildType())
            {
                return;
            }

            // Update the final merged AndroidManifest.xml prior to the gradle build.
            var manifestPath = Path.Combine(path, "src/main/AndroidManifest.xml");

            Debug.LogFormat("Updating manifest for Play Instant: {0}", manifestPath);

            Uri uri        = null;
            var instantUrl = PlayInstantBuildConfiguration.InstantUrl;

            if (!string.IsNullOrEmpty(instantUrl))
            {
                uri = new Uri(instantUrl);
            }

            var doc          = XDocument.Load(manifestPath);
            var errorMessage = AndroidManifestHelper.ConvertManifestToInstant(doc, uri);

            if (errorMessage != null)
            {
                PlayInstantBuilder.DisplayBuildError(
                    string.Format("Error updating AndroidManifest.xml: {0}", errorMessage));
                return;
            }

            doc.Save(manifestPath);
        }
        public string SwitchToInstant(Uri uri)
        {
            XDocument doc;

            if (File.Exists(AndroidManifestAssetsPath))
            {
                Debug.LogFormat("Loading existing file {0}", AndroidManifestAssetsPath);
                doc = XDocument.Load(AndroidManifestAssetsPath);
            }
            else
            {
                Debug.Log("Creating new manifest file");
                doc = AndroidManifestHelper.CreateManifestXDocument();
            }

            var errorMessage = AndroidManifestHelper.ConvertManifestToInstant(doc, uri);

            if (errorMessage != null)
            {
                return(errorMessage);
            }

            if (!Directory.Exists(AndroidManifestAssetsDirectory))
            {
                Directory.CreateDirectory(AndroidManifestAssetsDirectory);
            }

            doc.Save(AndroidManifestAssetsPath);

            Debug.LogFormat("Successfully updated {0}", AndroidManifestAssetsPath);
            return(null);
        }