Ejemplo n.º 1
0
        public override void fixProblem()
        {
            string fullManifestName = MultidexActivator.getCustomManifestPath();
            string defaultTemplate  = Path.Combine(EditorApplication.applicationContentsPath,
                                                   MultidexActivator.manifestDefaultTemplatePath);

            if (!File.Exists(defaultTemplate))
            {
                string unixAppContentsPath =
                    Path.GetDirectoryName(Path.GetDirectoryName(EditorApplication.applicationContentsPath));
                defaultTemplate = Path.Combine(unixAppContentsPath, MultidexActivator.manifestDefaultTemplatePath);
            }

            string appodealTemplate = AppodealUnityUtils.combinePaths(Application.dataPath,
                                                                      MultidexActivator.appodealTemplatesPath,
                                                                      MultidexActivator.manifestTemplateName);

            File.Copy(File.Exists(defaultTemplate) ? defaultTemplate : appodealTemplate, fullManifestName);
            AssetDatabase.ImportAsset(AppodealUnityUtils.absolute2Relative(fullManifestName),
                                      ImportAssetOptions.ForceUpdate);

            // There are no multidex activity in default AndroidManifest. But again, they can add it.
            XmlElement appNode = MultidexActivator.getApplicationNode(fullManifestName);
            string     ns      = appNode.GetNamespaceOfPrefix("android");

            if (!appNode.HasAttribute("name", ns))
            {
                new AddNameAttrubute(appNode, ns).fixProblem();
            }
        }
Ejemplo n.º 2
0
        public override void fixProblem()
        {
            var fullManifestName = MultidexActivator.getCustomManifestPath();
            var defaultTemplate  = Path.Combine(EditorApplication.applicationContentsPath,
                                                MultidexActivator.manifestDefaultTemplatePath);

            if (!File.Exists(defaultTemplate))
            {
                var unixAppContentsPath =
                    Path.GetDirectoryName(Path.GetDirectoryName(EditorApplication.applicationContentsPath));
                Debug.Assert(unixAppContentsPath != null, nameof(unixAppContentsPath) + " != null");
                defaultTemplate = Path.Combine(unixAppContentsPath, MultidexActivator.manifestDefaultTemplatePath);
            }

            var appodealTemplate = AppodealUnityUtils.combinePaths(Application.dataPath,
                                                                   MultidexActivator.appodealTemplatesPath,
                                                                   MultidexActivator.manifestTemplateName);

            File.Copy(File.Exists(defaultTemplate) ? defaultTemplate : appodealTemplate, fullManifestName);
            AssetDatabase.ImportAsset(AppodealUnityUtils.absolute2Relative(fullManifestName),
                                      ImportAssetOptions.ForceUpdate);

            var appNode = MultidexActivator.getApplicationNode(fullManifestName);
            var ns      = appNode.GetNamespaceOfPrefix("android");

            if (!appNode.HasAttribute("name", ns))
            {
                new AddNameAttrubute(appNode, ns).fixProblem();
            }
        }
Ejemplo n.º 3
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.º 4
0
        public override void fixProblem()
        {
            string fullManifestName = MultidexActivator.getCustomManifestPath();

            appNode.SetAttribute("name", ns, MultidexActivator.manifestMutlidexApp);
            appNode.OwnerDocument.Save(fullManifestName);
            AssetDatabase.ImportAsset(AppodealUnityUtils.absolute2Relative(fullManifestName),
                                      ImportAssetOptions.ForceUpdate);
        }
Ejemplo n.º 5
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();
            }
        }