using System; using System.IO; namespace Azerion.BlueStack.Editor.Android.Gradle { public class GradleDependencyCheckResult { public GradleDependencyCheckResult(bool hasMissingDependency, string errorMessage) { HasMissingDependency = hasMissingDependency; ErrorMessage = errorMessage; } public bool HasMissingDependency { get; } public string ErrorMessage { get; } } public static class GradleConfigUtils { public static string AddAndroidXProperties(string gradlePropertiesFileContent) { bool isUseAndroidXFound = false; bool isEnableJetifier = false; string[] lines = gradlePropertiesFileContent.Split('\n'); for (var i = 0; i < lines.Length; i++) { if (lines[i].Contains("android.useAndroidX")) { var propertyElements = lines[i].Split('='); if (propertyElements.Length >= 2 && propertyElements[1] == "false") { lines[i] = "android.useAndroidX=true"; } isUseAndroidXFound = true; } if (lines[i].Contains("android.enableJetifier")) { var propertyElements = lines[i].Split('='); if (propertyElements.Length >= 2 && propertyElements[1] == "false") { lines[i] = "android.enableJetifier=true"; } isEnableJetifier = true; } } gradlePropertiesFileContent = string.Join("\n", lines); if (!isEnableJetifier) { gradlePropertiesFileContent = gradlePropertiesFileContent + "\n" + "android.enableJetifier=true"; } if (!isUseAndroidXFound) { gradlePropertiesFileContent = gradlePropertiesFileContent + "\n" + "android.useAndroidX=true"; } return gradlePropertiesFileContent; } public static GradleDependencyCheckResult CheckSDKGradleDependencies(string gradleFilePath) { String[] gradleLines = File.ReadAllLines(gradleFilePath); var isFound = false; var androidMavenDependency = ""; var dependencies = DependencyProvider.GetDependencies(new AndroidDependencyParser()); foreach (var dependency in dependencies) { var androidDependency = (AndroidDependency)dependency; isFound = false; foreach (string line in gradleLines) { androidMavenDependency = androidDependency.GradleDependency; if (line.Contains(androidMavenDependency) && !line.Trim().StartsWith("//")) { isFound = true; } } if (!isFound) { break; } } if (!isFound) { return new GradleDependencyCheckResult(true, androidMavenDependency + " dependency is missing or commented out in your 'mainTemplate.gradle.'"); } return new GradleDependencyCheckResult(false, ""); } } }