74 lines
2.6 KiB
C#
74 lines
2.6 KiB
C#
#if UNITY_ANDROID
|
|
using System;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using Unity.Services.Mediation.Settings.Editor;
|
|
using UnityEditor.Android;
|
|
using UnityEditor.Build;
|
|
using UnityEditor.Build.Reporting;
|
|
|
|
namespace Unity.Services.Mediation.Build.Editor
|
|
{
|
|
class AdMobGradleVersionPreBuildCheck : IPreprocessBuildWithReport
|
|
{
|
|
const string k_AdMobWarning = "Unity Mediation: AdMob adapter is enabled and requires gradle version 5.6.4" +
|
|
" to build succesfully. Current Version : {0}";
|
|
|
|
const string k_GradleLibPathSuffix = "/lib";
|
|
const string k_GradleFilePrefix = "gradle-";
|
|
const string k_TrimmedFileSuffix = ".jar";
|
|
|
|
readonly Version k_MinimumGradleVersion = new Version("5.6.4");
|
|
|
|
public int callbackOrder { get; }
|
|
public void OnPreprocessBuild(BuildReport report)
|
|
{
|
|
// Check if AdMob is Installed
|
|
var adMobSettings = new AdMobSettings();
|
|
if (string.IsNullOrEmpty(adMobSettings.InstalledVersion))
|
|
return;
|
|
|
|
if (!IsGradleVersionSufficient(out var detectedVersion))
|
|
{
|
|
MediationLogger.LogWarning(string.Format(k_AdMobWarning, detectedVersion));
|
|
}
|
|
}
|
|
|
|
bool IsGradleVersionSufficient(out string detectedVersion)
|
|
{
|
|
/*
|
|
* Gradle Files Look like the following :
|
|
* gradle-core-5.6.4.jar
|
|
* gradle-kotlin-dsl-6.8.3.jar
|
|
*
|
|
* Retrieve version as characters after last '-' and before '.jar'
|
|
*/
|
|
|
|
var gradleLibPath = AndroidExternalToolsSettings.gradlePath + k_GradleLibPathSuffix;
|
|
var gradleLibFile = Directory.GetFiles(gradleLibPath)
|
|
?.FirstOrDefault(file => file.Substring(gradleLibPath.Length + 1).StartsWith(k_GradleFilePrefix))
|
|
?.Substring(gradleLibPath.Length + 1);
|
|
|
|
// Cannot find gradle file for version parsing.
|
|
if (gradleLibFile == null)
|
|
{
|
|
detectedVersion = null;
|
|
return false;
|
|
}
|
|
|
|
var gradleVersionSuffixSplit = gradleLibFile.Split('-');
|
|
var gradleVersionSuffix = gradleVersionSuffixSplit[gradleVersionSuffixSplit.Length - 1];
|
|
var gradleVersion = gradleVersionSuffix.Replace(k_TrimmedFileSuffix, string.Empty);
|
|
|
|
detectedVersion = gradleVersion;
|
|
if (Version.TryParse(gradleVersion, out Version version))
|
|
{
|
|
return version.CompareTo(k_MinimumGradleVersion) >= 0;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
#endif
|