Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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();
            }
        }
Ejemplo n.º 3
0
        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);
        }