12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- // Copyright (C) 2023 Google LLC
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
-
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Text.RegularExpressions;
-
- namespace GoogleMobileAds.Editor
- {
- /*
- * Utils class that contains helper methods.
- */
- public static class Utils
- {
- internal static string GradleTemplatePath =
- Path.Combine(AndroidPluginsDir, "baseProjectTemplate.gradle");
-
- // Android library plugins directory that contains custom gradle templates.
- internal const string AndroidPluginsDir = "Assets/Plugins/Android";
-
- // Extracts an Android Gradle Plugin version number from the contents of a *.gradle file.
- // This should work for Unity 2022.1 and below.
- // Ex.
- // classpath 'com.android.tools.build:gradle:4.0.1'
- private static Regex androidGradlePluginVersionExtract_legacy =
- new Regex(@"^\s*classpath\s+['""]com\.android\.tools\.build:gradle:([^'""]+)['""]$");
-
- // Extracts an Android Gradle Plugin version number from the contents of a *.gradle file for
- // Unity 2022.2+ or 2023.1+.
- // Ex.
- // id 'com.android.application' version '7.1.2' apply false
- private static Regex androidGradlePluginVersionExtract =
- new Regex(@"^\s*id\s+['""]com\.android\.application['""] version ['""]([^'""]+)['""]");
-
- /// <summary>
- /// Get the Android Gradle Plugin version used by the Unity project.
- /// </summary>
- public static string AndroidGradlePluginVersion
- {
- private set {}
- get
- {
- if (!Directory.Exists(AndroidPluginsDir) || !File.Exists(GradleTemplatePath))
- {
- return DefaultAndroidGradlePlugin();
- }
- var gradleTemplates = Directory.GetFiles(AndroidPluginsDir, "*.gradle",
- SearchOption.TopDirectoryOnly);
- foreach (var path in gradleTemplates)
- {
- foreach (var line in File.ReadAllLines(path))
- {
- var match = androidGradlePluginVersionExtract_legacy.Match(line);
- if (match != null && match.Success)
- {
- return match.Result("$1");
- }
- match = androidGradlePluginVersionExtract.Match(line);
- if (match != null && match.Success)
- {
- return match.Result("$1");
- }
- }
- }
- return DefaultAndroidGradlePlugin();
- }
- }
-
- // TODO(@vkini): read from default Unity baseProjectTemplate.gradle file
- private static string DefaultAndroidGradlePlugin()
- {
- #if UNITY_2022_3_OR_NEWER
- return "7.1.2";
- #else
- return "4.0.1";
- #endif
- }
- }
- }
|