You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
4.5 KiB
C#
106 lines
4.5 KiB
C#
//
|
|
// AppLovinPreProcess.cs
|
|
// AppLovin MAX Unity Plugin
|
|
//
|
|
// Created by Jonathan Liu on 10/19/2023.
|
|
// Copyright © 2023 AppLovin. All rights reserved.
|
|
//
|
|
|
|
using System;
|
|
using System.Linq;
|
|
using System.Xml;
|
|
using System.Xml.Linq;
|
|
using UnityEngine;
|
|
|
|
namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
|
{
|
|
public abstract class AppLovinPreProcess
|
|
{
|
|
private const string AppLovinDependenciesFileExportPath = "MaxSdk/AppLovin/Editor/Dependencies.xml";
|
|
|
|
private static readonly XmlWriterSettings DependenciesFileXmlWriterSettings = new XmlWriterSettings
|
|
{
|
|
Indent = true,
|
|
IndentChars = " ",
|
|
NewLineChars = "\n",
|
|
NewLineHandling = NewLineHandling.Replace
|
|
};
|
|
|
|
/// <summary>
|
|
/// Adds a string into AppLovin's Dependencies.xml file inside the containerElementString if it doesn't exist
|
|
/// </summary>
|
|
/// <param name="lineToAdd">The line you want to add into the xml file</param>
|
|
/// <param name="containerElementString">The root XML element under which to add the line. For example, to add a new dependency to Android, pass in "androidPackages"</param>
|
|
protected static void TryAddStringToDependencyFile(string lineToAdd, string containerElementString)
|
|
{
|
|
try
|
|
{
|
|
var dependenciesFilePath = MaxSdkUtils.GetAssetPathForExportPath(AppLovinDependenciesFileExportPath);
|
|
var dependencies = XDocument.Load(dependenciesFilePath);
|
|
// Get the container where we are going to insert the line
|
|
var containerElement = dependencies.Descendants(containerElementString).FirstOrDefault();
|
|
|
|
if (containerElement == null)
|
|
{
|
|
Debug.LogError(containerElementString + " not found in Dependencies.xml file");
|
|
return;
|
|
}
|
|
|
|
var elementToAdd = XElement.Parse(lineToAdd);
|
|
|
|
// Check if the xml file doesn't already contain the string.
|
|
if (containerElement.Elements().Any(element => XNode.DeepEquals(element, elementToAdd))) return;
|
|
|
|
// Append the new element to the container element
|
|
containerElement.Add(elementToAdd);
|
|
|
|
using (var xmlWriter = XmlWriter.Create(dependenciesFilePath, DependenciesFileXmlWriterSettings))
|
|
{
|
|
dependencies.Save(xmlWriter);
|
|
}
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
Debug.LogError("Google CMP will not function. Unable to add string to dependency file due to exception: " + exception.Message);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Removes a string from AppLovin's Dependencies.xml file inside the containerElementString if it exists
|
|
/// </summary>
|
|
/// <param name="lineToRemove">The line you want to remove from the xml file</param>
|
|
/// <param name="containerElementString">The root XML element from which to remove the line. For example, to remove an Android dependency, pass in "androidPackages"</param>
|
|
protected static void TryRemoveStringFromDependencyFile(string lineToRemove, string containerElementString)
|
|
{
|
|
try
|
|
{
|
|
var dependenciesFilePath = MaxSdkUtils.GetAssetPathForExportPath(AppLovinDependenciesFileExportPath);
|
|
var dependencies = XDocument.Load(dependenciesFilePath);
|
|
var containerElement = dependencies.Descendants(containerElementString).FirstOrDefault();
|
|
|
|
if (containerElement == null)
|
|
{
|
|
Debug.LogError(containerElementString + " not found in Dependencies.xml file");
|
|
return;
|
|
}
|
|
|
|
// Check if the dependency line exists.
|
|
var elementToFind = XElement.Parse(lineToRemove);
|
|
var existingElement = containerElement.Elements().FirstOrDefault(element => XNode.DeepEquals(element, elementToFind));
|
|
if (existingElement == null) return;
|
|
|
|
existingElement.Remove();
|
|
|
|
using (var xmlWriter = XmlWriter.Create(dependenciesFilePath, DependenciesFileXmlWriterSettings))
|
|
{
|
|
dependencies.Save(xmlWriter);
|
|
}
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
Debug.LogError("Unable to remove string from dependency file due to exception: " + exception.Message);
|
|
}
|
|
}
|
|
}
|
|
}
|