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.
CrowdControl/Assets/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinInitialize.cs

142 lines
6.4 KiB
C#

//
// MaxInitialization.cs
// AppLovin MAX Unity Plugin
//
// Created by Thomas So on 5/24/19.
// Copyright © 2019 AppLovin. All rights reserved.
//
using AppLovinMax.Scripts.IntegrationManager.Editor;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEditor;
namespace AppLovinMax.Scripts.IntegrationManager.Editor
{
[InitializeOnLoad]
public class AppLovinInitialize
{
private static readonly List<string> ObsoleteNetworks = new List<string>
{
"AdColony",
"Criteo",
"Nend",
"Snap",
"Tapjoy",
"VerizonAds",
"VoodooAds"
};
private static readonly List<string> ObsoleteFileExportPathsToDelete = new List<string>
{
// The `MaxSdk/Scripts/Editor` folder contents have been moved into `MaxSdk/Scripts/IntegrationManager/Editor`.
"MaxSdk/Scripts/Editor",
"MaxSdk/Scripts/Editor.meta",
// The `EventSystemChecker` has been renamed to `MaxEventSystemChecker`.
"MaxSdk/Scripts/EventSystemChecker.cs",
"MaxSdk/Scripts/EventSystemChecker.cs.meta",
// Google AdMob adapter pre/post process scripts. The logic has been migrated to the main plugin.
"MaxSdk/Mediation/Google/Editor/MaxGoogleInitialize.cs",
"MaxSdk/Mediation/Google/Editor/MaxGoogleInitialize.cs.meta",
"MaxSdk/Mediation/Google/Editor/MaxMediationGoogleUtils.cs",
"MaxSdk/Mediation/Google/Editor/MaxMediationGoogleUtils.cs.meta",
"MaxSdk/Mediation/Google/Editor/PostProcessor.cs",
"MaxSdk/Mediation/Google/Editor/PostProcessor.cs.meta",
"MaxSdk/Mediation/Google/Editor/PreProcessor.cs",
"MaxSdk/Mediation/Google/Editor/PreProcessor.cs.meta",
"MaxSdk/Mediation/Google/Editor/MaxSdk.Mediation.Google.Editor.asmdef",
"MaxSdk/Mediation/Google/MaxSdk.Mediation.Google.Editor.asmdef.meta",
"Plugins/Android/MaxMediationGoogle.androidlib",
"Plugins/Android/MaxMediationGoogle.androidlib.meta",
// Google Ad Manager adapter pre/post process scripts. The logic has been migrated to the main plugin.
"MaxSdk/Mediation/GoogleAdManager/Editor/MaxGoogleAdManagerInitialize.cs",
"MaxSdk/Mediation/GoogleAdManager/Editor/MaxGoogleAdManagerInitialize.cs.meta",
"MaxSdk/Mediation/GoogleAdManager/Editor/PostProcessor.cs",
"MaxSdk/Mediation/GoogleAdManager/Editor/PostProcessor.cs.meta",
"MaxSdk/Mediation/GoogleAdManager/Editor/MaxSdk.Mediation.GoogleAdManager.Editor.asmdef",
"MaxSdk/Mediation/GoogleAdManager/Editor/MaxSdk.Mediation.GoogleAdManager.Editor.asmdef.meta",
"Plugins/Android/MaxMediationGoogleAdManager.androidlib",
"Plugins/Android/MaxMediationGoogleAdManager.androidlib.meta",
// The `VariableService` has been removed.
"MaxSdk/Scripts/MaxVariableServiceAndroid.cs",
"MaxSdk/Scripts/MaxVariableServiceAndroid.cs.meta",
"MaxSdk/Scripts/MaxVariableServiceiOS.cs",
"MaxSdk/Scripts/MaxVariableServiceiOS.cs.meta",
"MaxSdk/Scripts/MaxVariableServiceUnityEditor.cs",
"MaxSdk/Scripts/MaxVariableServiceUnityEditor.cs.meta"
};
static AppLovinInitialize()
{
#if UNITY_IOS
// Check that the publisher is targeting iOS 9.0+
if (!PlayerSettings.iOS.targetOSVersionString.StartsWith("9.") && !PlayerSettings.iOS.targetOSVersionString.StartsWith("1"))
{
MaxSdkLogger.UserError("Detected iOS project version less than iOS 9 - The AppLovin MAX SDK WILL NOT WORK ON < iOS9!!!");
}
#endif
var pluginParentDir = AppLovinIntegrationManager.PluginParentDirectory;
var isPluginOutsideAssetsDir = AppLovinIntegrationManager.IsPluginOutsideAssetsDirectory;
var changesMade = AppLovinIntegrationManager.MovePluginFilesIfNeeded(pluginParentDir, isPluginOutsideAssetsDir);
if (isPluginOutsideAssetsDir)
{
// If the plugin is not under the assets folder, delete the MaxSdk/Mediation folder in the plugin, so that the adapters are not imported at that location and imported to the default location.
var mediationDir = Path.Combine(pluginParentDir, "MaxSdk/Mediation");
if (Directory.Exists(mediationDir))
{
FileUtil.DeleteFileOrDirectory(mediationDir);
FileUtil.DeleteFileOrDirectory(mediationDir + ".meta");
changesMade = true;
}
}
AppLovinIntegrationManager.AddLabelsToAssetsIfNeeded(pluginParentDir, isPluginOutsideAssetsDir);
foreach (var obsoleteFileExportPathToDelete in ObsoleteFileExportPathsToDelete)
{
var pathToDelete = MaxSdkUtils.GetAssetPathForExportPath(obsoleteFileExportPathToDelete);
if (CheckExistence(pathToDelete))
{
MaxSdkLogger.UserDebug("Deleting obsolete file '" + pathToDelete + "' that are no longer needed.");
FileUtil.DeleteFileOrDirectory(pathToDelete);
changesMade = true;
}
}
// Check if any obsolete networks are installed
foreach (var obsoleteNetwork in ObsoleteNetworks)
{
var networkDir = Path.Combine(pluginParentDir, "MaxSdk/Mediation/" + obsoleteNetwork);
if (CheckExistence(networkDir))
{
MaxSdkLogger.UserDebug("Deleting obsolete network " + obsoleteNetwork + " from path " + networkDir + "...");
FileUtil.DeleteFileOrDirectory(networkDir);
changesMade = true;
}
}
// Refresh UI
if (changesMade)
{
AssetDatabase.Refresh();
MaxSdkLogger.UserDebug("AppLovin MAX Migration completed");
}
AppLovinAutoUpdater.Update();
}
private static bool CheckExistence(string location)
{
return File.Exists(location) ||
Directory.Exists(location) ||
(location.EndsWith("/*") && Directory.Exists(Path.GetDirectoryName(location)));
}
}
}