public override void fixProblem() { //EditorApplication.applicationContentsPath is different for macos and win. need to fix to reach manifest and gradle templates string defaultGradleTemplateFullName = MultidexActivator.getDefaultGradleTemplate(); string 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. ImportantGradleSettings settings = new ImportantGradleSettings(destGradleScriptFullName); if (!settings.isMultiDexAddedCompletely()) { new EnableMultidexInGradle(destGradleScriptFullName).fixProblem(); } }
public override void fixProblem() { var defaultGradleTemplateFullName = MultidexActivator.getDefaultGradleTemplate(); var destGradleScriptFullName = AppodealUnityUtils.combinePaths(Application.dataPath, MultidexActivator.androidPluginsPath, MultidexActivator.gradleTemplateName); if (File.Exists(defaultGradleTemplateFullName)) { File.Copy(defaultGradleTemplateFullName, destGradleScriptFullName); } AssetDatabase.ImportAsset(AppodealUnityUtils.absolute2Relative(destGradleScriptFullName), ImportAssetOptions.ForceUpdate); var settings = new ImportantGradleSettings(destGradleScriptFullName); if (!settings.isMultiDexAddedCompletely()) { new EnableMultidexInGradle(destGradleScriptFullName).fixProblem(); } }
override public List <FixProblemInstruction> check() { List <FixProblemInstruction> instructions = new List <FixProblemInstruction>(); if (isNodexBuild() && EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android) { if (!AppodealUnityUtils.isGradleEnabled()) { if (!AppodealUnityUtils.isGradleAvailable()) { FixProblemInstruction fix = new FixProblemInstruction( "Gradle should be enabled if you use nodex version of Appodeal Plugin. " + "But your version of Unity doesn't support gradle build system.Please update your Unity or use export to Eclipse or Android Studio.", false); instructions.Add(fix); return(instructions); } else { instructions.Add(new EnableGradle()); } } string customGradeScript = getCustomGradleScriptPath(); if (string.IsNullOrEmpty(customGradeScript) || !File.Exists(customGradeScript)) { if (File.Exists(getDefaultGradleTemplate())) { instructions.Add(new CopyGradleScriptAndEnableMultidex()); } else { FixProblemInstruction instr = new FixProblemInstruction( "Tere is no build.gradle template in your Unity. " + "Please ensure that your copy of Unity isn't crashed and contact Appodeal Support team.", false); instructions.Add(instr); return(instructions); } } else { ImportantGradleSettings settings = new ImportantGradleSettings(customGradeScript); if (!settings.isMultiDexAddedCompletely()) { instructions.Add(new EnableMultidexInGradle(customGradeScript)); } if (!settings.isJavaVersionIncluded()) { instructions.Add(new EnableJavaVersion(customGradeScript)); } } string customManifestPath = getCustomManifestPath(); if (string.IsNullOrEmpty(customManifestPath) || !File.Exists(customManifestPath)) { instructions.Add(new CopyManifestTemplateAndAddNameAttribute()); } else { XmlElement appNode = getApplicationNode(customManifestPath); string ns = appNode.GetNamespaceOfPrefix("android"); if (!appNode.HasAttribute("name", ns)) { instructions.Add(new AddNameAttrubute(appNode, ns)); } else { if (appNode.GetAttribute("name", ns) != manifestMutlidexApp) { FixProblemInstruction fix = new FixProblemInstruction( "We found that you use custom Application class in this project. " + "Please ensure that your application class meets the multidex requirements (see the official android multiex documentation).", false); instructions.Add(fix); } } } } else if (!isNodexBuild() && isMultidexEnabledSimpleCheck() && EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android) { FixProblemInstruction fix = new FixProblemInstruction( "We found that multidex is enabled in your project. To avoid possible problems please " + "replace current version of Appodeal plugin with nodex version.", false); instructions.Add(fix); } return(instructions); }