2023-12-26 03:47:44 +00:00
/ /
// 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.Editor
{
[InitializeOnLoad]
public class MaxInitialize
{
private static readonly List < string > ObsoleteNetworks = new List < string >
{
"Snap" ,
2024-01-26 04:24:22 +00:00
"Tapjoy" ,
2023-12-26 03:47:44 +00:00
"VerizonAds" ,
"VoodooAds"
} ;
private static readonly List < string > ObsoleteFileExportPathsToDelete = new List < string >
{
// 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" ,
2024-01-26 04:24:22 +00:00
// Google Ad Manager adapter pre/post process scripts. The logic has been migrated to the main plugin.
2023-12-26 03:47:44 +00:00
"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" ,
2024-01-26 04:24:22 +00:00
"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"
2023-12-26 03:47:44 +00:00
} ;
static MaxInitialize ( )
{
#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 ) ) ) ;
}
}
}