public override void fixProblem() { //EditorApplication.applicationContentsPath is different for macos and win. need to fix to reach manifest and gradle templates var defaultGradleTemplateFullName = MultidexActivator.getDefaultGradleTemplate(); var destGradleScriptFullName = AppodealUnityUtils.combinePaths(Application.dataPath, MultidexActivator.androidPluginsPath, MultidexActivator.gradleTemplateName); //Prefer to use build.gradle from the box. Just in case. if (File.Exists(defaultGradleTemplateFullName)) { File.Copy(defaultGradleTemplateFullName, destGradleScriptFullName); } AssetDatabase.ImportAsset(AppodealUnityUtils.absolute2Relative(destGradleScriptFullName), ImportAssetOptions.ForceUpdate); //There are no multidex settings in default build.gradle but they can add that stuff. var settings = new ImportantGradleSettings(destGradleScriptFullName); if (!settings.isMultiDexAddedCompletely()) { new EnableMultidexInGradle(destGradleScriptFullName).fixProblem(); } }
public override void fixProblem() { var settings = new ImportantGradleSettings(path); var leadingWhitespaces = " "; const string additionalWhiteSpaces = ""; string line; var modifiedGradle = ""; var gradleScript = new StreamReader(path); while ((line = gradleScript.ReadLine()) != null) { if (line.Contains(MultidexActivator.GRAFLE_DEFAULT_CONFIG)) { if (!settings.compileOptions) { modifiedGradle += additionalWhiteSpaces + leadingWhitespaces + MultidexActivator.COMPILE_OPTIONS + Environment.NewLine; } if (!settings.sourceCapability) { modifiedGradle += leadingWhitespaces + leadingWhitespaces + MultidexActivator.GRADLE_SOURCE_CAPABILITY + MultidexActivator.GRADLE_JAVA_VERSION_1_8 + Environment.NewLine; } if (!settings.targetCapability) { modifiedGradle += leadingWhitespaces + leadingWhitespaces + MultidexActivator.GRADLE_TARGET_CAPATILITY + MultidexActivator.GRADLE_JAVA_VERSION_1_8 + Environment.NewLine; } if (!settings.targetCapability) { modifiedGradle += leadingWhitespaces + "}" + Environment.NewLine; } if (!settings.targetCapability) { modifiedGradle += leadingWhitespaces + Environment.NewLine; } } modifiedGradle += line + Environment.NewLine; leadingWhitespaces = Regex.Match(line, "^\\s*").Value; } gradleScript.Close(); File.WriteAllText(path, modifiedGradle); AssetDatabase.ImportAsset(AppodealUnityUtils.absolute2Relative(path), ImportAssetOptions.ForceUpdate); }
private void EnableMultidex(string manifestPath, AndroidManifest androidManifest) { #if UNITY_2019_3_OR_NEWER if (CheckContainsMultidex(manifestPath, manifestMutlidexApp)) { androidManifest.RemoveMultiDexApplication(); } #else if (AppodealSettings.Instance.AndroidMultidex) { if (PlayerSettings.Android.minSdkVersion < AndroidSdkVersions.AndroidApiLevel21) { androidManifest.AddMultiDexApplication(); if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android) { if (!AppodealUnityUtils.isGradleEnabled()) { new EnableGradle().fixProblem(); } var customGradeScript = GetCustomGradleScriptPath(); if (string.IsNullOrEmpty(customGradeScript) || !File.Exists(customGradeScript)) { if (File.Exists(getDefaultGradleTemplate())) { new CopyGradleScriptAndEnableMultidex().fixProblem(); } } else { var settings = new ImportantGradleSettings(customGradeScript); if (!settings.isMultiDexAddedCompletely()) { new EnableMultidexInGradle(customGradeScript).fixProblem(); } if (!settings.isJavaVersionIncluded()) { new EnableJavaVersion(customGradeScript).fixProblem(); } } } } } else { androidManifest.RemoveMultiDexApplication(); } #endif }
public override void fixProblem() { var settings = new ImportantGradleSettings(path); var leadingWhitespaces = ""; string line; var prevLine = ""; var modifiedGradle = ""; var gradleScript = new StreamReader(path); string multidexDependency; multidexDependency = MultidexActivator.GRADLE_IMPLEMENTATION + MultidexActivator.GRADLE_MULTIDEX_DEPENDENCY; while ((line = gradleScript.ReadLine()) != null) { if (!settings.multidexDependencyPresented && line.Contains(MultidexActivator.GRADLE_DEPENDENCIES)) { modifiedGradle += leadingWhitespaces + multidexDependency + Environment.NewLine; } if (!settings.multidexEnabled && line.Contains(MultidexActivator.GRADLE_APP_ID)) { modifiedGradle += leadingWhitespaces + MultidexActivator.GRADLE_MULTIDEX_ENABLE + Environment.NewLine; } if (settings.deprecatedProguardPresented && line.Contains(MultidexActivator.GRADLE_USE_PROGUARD)) { continue; } modifiedGradle += line + Environment.NewLine; leadingWhitespaces = Regex.Match(line, "^\\s*").Value; if (line.Contains("repositories") && prevLine.Contains("allprojects") && !settings.googleRepositoryPresented) { leadingWhitespaces += leadingWhitespaces; modifiedGradle += leadingWhitespaces + MultidexActivator.GRADLE_GOOGLE_REPOSITORY_COMPAT + Environment.NewLine; } prevLine = line; } gradleScript.Close(); File.WriteAllText(path, modifiedGradle); AssetDatabase.ImportAsset(AppodealUnityUtils.absolute2Relative(path), ImportAssetOptions.ForceUpdate); }