com.azerion.bluestack 3.0.3 → 3.1.0-preview2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/Editor/Android/AndroidBuildPostProcess.cs +0 -1
  2. package/Editor/Android/AndroidDependency.cs +1 -2
  3. package/Editor/Android/AndroidDependencyModifier.cs +55 -0
  4. package/Editor/Android/AndroidDependencyModifier.cs.meta +3 -0
  5. package/Editor/Android/AndroidDependencyParser.cs +26 -1
  6. package/Editor/Android/ManifestProcessor.cs +2 -1
  7. package/Editor/Azerion.BlueStack.Editor.asmdef +14 -14
  8. package/Editor/BlueStackDependencies.xml +1 -1
  9. package/Editor/BlueStackMediationDependencies.xml +11 -0
  10. package/Editor/BlueStackMediationDependencies.xml.meta +7 -0
  11. package/Editor/BlueStackSettings.cs +21 -18
  12. package/Editor/BlueStackSettingsEditor.cs +64 -1
  13. package/Editor/DebugHelper.cs +2 -2
  14. package/Editor/Dependency.cs +1 -1
  15. package/Editor/DependencyProvider.cs +213 -2
  16. package/Editor/IDependencyModifier.cs +12 -0
  17. package/Editor/IDependencyModifier.cs.meta +11 -0
  18. package/Editor/IDependencyParser.cs +1 -0
  19. package/Editor/MediationNetworkDependency.cs +34 -0
  20. package/Editor/MediationNetworkDependency.cs.meta +3 -0
  21. package/Editor/iOS/IOSDependency.cs +12 -0
  22. package/Editor/iOS/IOSDependency.cs.meta +11 -0
  23. package/Editor/iOS/IOSDependencyModifier.cs +105 -0
  24. package/Editor/iOS/IOSDependencyModifier.cs.meta +3 -0
  25. package/Editor/iOS/IOSDependencyParser.cs +32 -0
  26. package/Editor/iOS/PodDependency/PodDependencyUtils.cs +5 -1
  27. package/Example/Azerion.BlueStack.Example.asmdef +14 -14
  28. package/Example/Scripts/NativeAdManager.cs +5 -7
  29. package/Example/Scripts/SmallNativeAdManager.cs +4 -6
  30. package/README.md +4 -1
  31. package/Runtime/API/AdSize.cs +2 -2
  32. package/Runtime/API/Banner/BannerAd.cs +1 -1
  33. package/Runtime/API/BlueStackAds.cs +7 -3
  34. package/Runtime/API/InterstitialAd.cs +20 -5
  35. package/Runtime/API/NativeAd/NativeAd.cs +20 -26
  36. package/Runtime/API/NativeAd/NativeAdEventArgs.cs +1 -5
  37. package/Runtime/API/NativeAd/NativeAdInteractionHandler.cs +176 -173
  38. package/Runtime/API/NativeAd/NativeAdLoader.cs +10 -14
  39. package/Runtime/API/NativeAd/NativeAdObject.cs +563 -547
  40. package/Runtime/API/NativeAd/NativeAdType.cs +6 -6
  41. package/Runtime/API/NativeAd/NativeAssetInfo.cs +28 -28
  42. package/Runtime/Azerion.BlueStack.asmdef +14 -14
  43. package/Runtime/Common/NativeAd/AdLoaderClientArgs.cs +8 -8
  44. package/Runtime/Common/NativeAd/AdsEventExecutor.cs +69 -68
  45. package/Runtime/Common/NativeAd/DummyNativeClient.cs +52 -52
  46. package/Runtime/Common/NativeAd/NativeClientEventArgs.cs +5 -5
  47. package/Runtime/Common/NativeAd/NativeUtils.cs +111 -107
  48. package/Runtime/Internal/IBannerAdClient.cs +1 -1
  49. package/Runtime/Internal/IBlueStackClient.cs +2 -1
  50. package/Runtime/Internal/NativeAd/IAdLoaderClient.cs +12 -12
  51. package/Runtime/Internal/NativeAd/INativeAdClient.cs +1 -1
  52. package/Runtime/Internal/NativeAd/INativeClientFactory.cs +5 -5
  53. package/Runtime/Platforms/Android/BlueStackClient.cs +2 -1
  54. package/Runtime/Platforms/Android/BlueStackNativeClassNames.cs +2 -1
  55. package/Runtime/Platforms/Unity/AdvertisementManager.cs +5 -4
  56. package/Runtime/Platforms/Unity/BannerAdClient.cs +16 -9
  57. package/Runtime/Platforms/Unity/BaseAdClient.cs +7 -5
  58. package/Runtime/Platforms/Unity/BlueStackClient.cs +4 -3
  59. package/Runtime/Platforms/Unity/ClientsFactory.cs +0 -1
  60. package/Runtime/Platforms/Unity/InitializationStatusClient.cs +1 -0
  61. package/Runtime/Platforms/Unity/InterstitialAdClient.cs +12 -6
  62. package/Runtime/Platforms/Unity/NativeAdClient.cs +16 -10
  63. package/Runtime/Platforms/Unity/RewardedVideoAdClient.cs +9 -3
  64. package/Runtime/Platforms/Unity/Utils.cs +7 -3
  65. package/Runtime/Platforms/iOS/BannerAdClient.cs +33 -24
  66. package/Runtime/Platforms/iOS/BlueStackClient.cs +14 -10
  67. package/Runtime/Platforms/iOS/ClientsFactory.cs +0 -2
  68. package/Runtime/Platforms/iOS/Externs.cs +72 -65
  69. package/Runtime/Platforms/iOS/InitializationStatusClient.cs +6 -5
  70. package/Runtime/Platforms/iOS/InterstitialAdClient.cs +27 -21
  71. package/Runtime/Platforms/iOS/NativeAdClient.cs +27 -22
  72. package/Runtime/Platforms/iOS/PreferenceClient.cs +1 -1
  73. package/Runtime/Platforms/iOS/RewardedVideoAdClient.cs +27 -20
  74. package/Runtime/Platforms/iOS/Utils.cs +6 -3
  75. package/Runtime/Utilities/MiniJSON.cs +12 -12
  76. package/package.json +1 -1
  77. package/Editor/iOS/Dependency.cs +0 -0
  78. package/Editor/iOS/Dependency.cs.meta +0 -3
@@ -1,5 +1,4 @@
1
1
  #if UNITY_ANDROID
2
-
3
2
  using System;
4
3
  using System.IO;
5
4
  using System.Linq;
@@ -2,12 +2,11 @@ namespace Azerion.BlueStack.Editor.Android
2
2
  {
3
3
  public class AndroidDependency : Dependency
4
4
  {
5
-
6
5
  public AndroidDependency(string gradleDependency, string name, string version) : base(name, version)
7
6
  {
8
7
  GradleDependency = gradleDependency;
9
8
  }
10
-
9
+
11
10
  public string GradleDependency { get; }
12
11
  }
13
12
  }
@@ -0,0 +1,55 @@
1
+ using System;
2
+ using System.Collections.Generic;
3
+ using System.IO;
4
+ using System.Xml;
5
+ using UnityEngine;
6
+
7
+ namespace Azerion.BlueStack.Editor.Android
8
+ {
9
+ public class AndroidDependencyModifier : IDependencyModifier
10
+ {
11
+ void IDependencyModifier.modifyDependencies(string xmlFilePath, List<MediationNetworkDependency> dependencies)
12
+ {
13
+
14
+ }
15
+
16
+ void IDependencyModifier.modifyMediationNetworkDependencies(string xmlFilePath,
17
+ List<MediationNetworkDependency> dependencies)
18
+ {
19
+ XmlDocument mainDependencyXML = new XmlDocument();
20
+
21
+ try
22
+ {
23
+ mainDependencyXML.Load(xmlFilePath);
24
+ }
25
+ catch (IOException e)
26
+ {
27
+ throw new Exception("Unable to load xml, error: " + e.Message);
28
+ }
29
+
30
+ foreach (MediationNetworkDependency dependency in dependencies)
31
+ {
32
+ XmlNode mainNode =
33
+ mainDependencyXML.SelectSingleNode(
34
+ $"//networkList/androidNetworks/network[@name='{dependency.Name}']");
35
+
36
+ if (mainNode != null)
37
+ {
38
+ mainNode.Attributes["active"].Value = dependency.Active.ToString();
39
+ }
40
+ else
41
+ {
42
+ // Node doesn't exists in Mediation Dependency XML
43
+ Debug.LogError(
44
+ $"Something went wrong: Node '{dependency.Name}' doesn't exists in Mediation Dependency XML! " +
45
+ "Please check if you have manually changed the xml");
46
+ }
47
+ }
48
+
49
+ // Save the modified XML
50
+ DependencyProvider.SaveMainXMLFile(mainDependencyXML.OuterXml);
51
+
52
+ Debug.Log("Mediation Dependency XML files merged and updated successfully.");
53
+ }
54
+ }
55
+ }
@@ -0,0 +1,3 @@
1
+ fileFormatVersion: 2
2
+ guid: 79c21ad51cf7244c985af0130855820f
3
+ timeCreated: 1671784779
@@ -18,7 +18,32 @@ namespace Azerion.BlueStack.Editor.Android
18
18
  {
19
19
  var specAttribute = androidPackageNode.Attributes?["spec"];
20
20
  if (specAttribute == null) continue;
21
- dependencies.Add(new AndroidDependency(specAttribute.Value,"", ""));
21
+ dependencies.Add(new AndroidDependency(specAttribute.Value, "", ""));
22
+ }
23
+
24
+ return dependencies;
25
+ }
26
+
27
+ List<MediationNetworkDependency> IDependencyParser.parseMediationNetworkDependencies(string xmlFilePath)
28
+ {
29
+ var xmlDoc = new XmlDocument();
30
+ xmlDoc.Load(xmlFilePath);
31
+ const string xmlPathPattern = "//networkList/androidNetworks";
32
+ var androidPackagesNode = xmlDoc.SelectSingleNode(xmlPathPattern);
33
+ var dependencies = new List<MediationNetworkDependency>();
34
+ if (androidPackagesNode == null) return dependencies;
35
+ foreach (XmlNode androidPackageNode in androidPackagesNode.ChildNodes)
36
+ {
37
+ var nameAttribute = androidPackageNode.Attributes?["name"];
38
+ var packageAttribute = androidPackageNode.Attributes?["package"];
39
+ var activeAttribute = androidPackageNode.Attributes?["active"];
40
+ if (nameAttribute == null || packageAttribute == null) continue;
41
+
42
+ var name = nameAttribute.Value;
43
+ var package = packageAttribute.Value;
44
+ var active = bool.Parse(activeAttribute.Value);
45
+
46
+ dependencies.Add(new MediationNetworkDependency(name, package, active));
22
47
  }
23
48
 
24
49
  return dependencies;
@@ -70,7 +70,8 @@ namespace Azerion.BlueStack.Editor.Android
70
70
  }
71
71
  else
72
72
  {
73
- adMobAppMetaElement.SetAttributeValue(ANDROID_NS + "value", BlueStackSettings.Instance.AdmobAppIdAndroid);
73
+ adMobAppMetaElement.SetAttributeValue(ANDROID_NS + "value",
74
+ BlueStackSettings.Instance.AdmobAppIdAndroid);
74
75
  }
75
76
 
76
77
  elemManifest.Save(manifestPath);
@@ -1,16 +1,16 @@
1
1
  {
2
- "name": "Azerion.BlueStack.Editor",
3
- "rootNamespace": "",
4
- "references": [],
5
- "includePlatforms": [
6
- "Editor"
7
- ],
8
- "excludePlatforms": [],
9
- "allowUnsafeCode": false,
10
- "overrideReferences": false,
11
- "precompiledReferences": [],
12
- "autoReferenced": true,
13
- "defineConstraints": [],
14
- "versionDefines": [],
15
- "noEngineReferences": false
2
+ "name": "Azerion.BlueStack.Editor",
3
+ "rootNamespace": "",
4
+ "references": [],
5
+ "includePlatforms": [
6
+ "Editor"
7
+ ],
8
+ "excludePlatforms": [],
9
+ "allowUnsafeCode": false,
10
+ "overrideReferences": false,
11
+ "precompiledReferences": [],
12
+ "autoReferenced": true,
13
+ "defineConstraints": [],
14
+ "versionDefines": [],
15
+ "noEngineReferences": false
16
16
  }
@@ -1,6 +1,6 @@
1
1
  <dependencies>
2
2
  <androidPackages>
3
- <androidPackage spec="com.azerion:bluestack-sdk-core:4.3.0" />
3
+ <androidPackage spec="com.azerion:bluestack-sdk-core:4.3.1.3-SNAPSHOT"/>
4
4
  </androidPackages>
5
5
  <iosPods>
6
6
  <iosPod name="BlueStack-SDK" version="4.4.0" bitcodeEnabled="false" addToAllTargets="false" subspecs="['Google-Mobile-Ads-SDK']"/>
@@ -0,0 +1,11 @@
1
+ <networkList>
2
+ <androidNetworks>
3
+ </androidNetworks>
4
+ <iosNetworks>
5
+ <network name="AdMob" package="Google-Mobile-Ads-SDK" active="true"/>
6
+ <network name="Smart Display" package="Smart-Display-SDK" active="true"/>
7
+ <network name="Ogury" package="OguryAds" active="true"/>
8
+ <network name="In-App Bidding" package="In-App-Bidding" active="true"/>
9
+ <network name="ImproveDigital" package="ImproveDigital" active="true"/>
10
+ </iosNetworks>
11
+ </networkList>
@@ -0,0 +1,7 @@
1
+ fileFormatVersion: 2
2
+ guid: 17379802e308d4595828a770efabe5f7
3
+ TextScriptImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant:
@@ -1,3 +1,4 @@
1
+ using System.Collections.Generic;
1
2
  using UnityEngine;
2
3
 
3
4
  namespace Azerion.BlueStack.Editor
@@ -7,25 +8,26 @@ namespace Azerion.BlueStack.Editor
7
8
  private static BlueStackSettings instance;
8
9
  private const string BlueStackSettingsFile = "BlueStackSettings";
9
10
 
10
- // #if !UNITY_ANDROID
11
- // [HideInInspector]
12
- // #endif
13
- [SerializeField] private string admobAppIdAndroid;
14
- public string AdmobAppIdAndroid
11
+ [SerializeField] private string admobAppIdAndroid;
12
+ public string AdmobAppIdAndroid
15
13
  {
16
- get { return Instance.admobAppIdAndroid; }
17
- set { Instance.admobAppIdAndroid = value; }
14
+ get => Instance.admobAppIdAndroid;
15
+ set => Instance.admobAppIdAndroid = value;
16
+ }
17
+
18
+ [SerializeField] private string admobAppIdIOS;
19
+ public string AdmobAppIdIOS
20
+ {
21
+ get => Instance.admobAppIdIOS;
22
+ set => Instance.admobAppIdIOS = value;
23
+ }
24
+
25
+ [SerializeField] private List<MediationNetworkDependency> networkList;
26
+ public List<MediationNetworkDependency> NetworkList
27
+ {
28
+ get => Instance.networkList;
29
+ set => Instance.networkList = value;
18
30
  }
19
-
20
- // #if !UNITY_IOS
21
- // [HideInInspector]
22
- // #endif
23
- [SerializeField] private string admobAppIdIOS;
24
- public string AdmobAppIdIOS
25
- {
26
- get { return Instance.admobAppIdIOS; }
27
- set { Instance.admobAppIdIOS = value; }
28
- }
29
31
 
30
32
  public static BlueStackSettings Instance
31
33
  {
@@ -44,7 +46,8 @@ namespace Azerion.BlueStack.Editor
44
46
  }
45
47
  else
46
48
  {
47
- Debug.LogWarning("BlueStackSettings asset not found! Creating new via Azerion/BlueStack/Settings menu");
49
+ Debug.LogWarning(
50
+ "BlueStackSettings asset not found! Creating new via Azerion/BlueStack/Settings menu");
48
51
  return null;
49
52
  }
50
53
  }
@@ -1,6 +1,12 @@
1
+ using System;
2
+ using System.Collections.Generic;
1
3
  using System.IO;
4
+ using System.Linq;
2
5
  using UnityEditor;
3
6
  using UnityEngine;
7
+ using System.Xml;
8
+ using Azerion.BlueStack.Editor.Android;
9
+ using Azerion.BlueStack.Editor.iOS;
4
10
 
5
11
  namespace Azerion.BlueStack.Editor
6
12
  {
@@ -10,7 +16,15 @@ namespace Azerion.BlueStack.Editor
10
16
  private const string BlueStackSettingsResDir = "Assets/Resources";
11
17
  private const string BlueStackSettingsFile = "BlueStackSettings";
12
18
  private const string BlueStackSettingsFileExtension = ".asset";
13
-
19
+
20
+ private List<bool> iOSMediationNetworkList = new List<bool>();
21
+ private List<bool> AndroidMediationNetworkList = new List<bool>();
22
+ SerializedProperty iOSMediationNetworkListProperty;
23
+ SerializedProperty androidMediationNetworkListProperty;
24
+
25
+ SerializedProperty iOSAdmobAppIdProperty;
26
+ SerializedProperty androidAdmobAppIdProperty;
27
+
14
28
  [MenuItem("Azerion/BlueStack/Settings")]
15
29
  public static void OpenInspector()
16
30
  {
@@ -33,5 +47,54 @@ namespace Azerion.BlueStack.Editor
33
47
  EditorApplication.ExecuteMenuItem("Window/General/Inspector");
34
48
  }
35
49
  }
50
+
51
+ void OnEnable()
52
+ {
53
+ // BlueStackSettings.Instance.NetworkList.Clear();
54
+
55
+ // Sync/Copy base mediation dependency xml file from Package to Assets directory
56
+ DependencyProvider.SyncMediationDependencyXML();
57
+
58
+ iOSAdmobAppIdProperty = serializedObject.FindProperty("admobAppIdIOS");
59
+ androidAdmobAppIdProperty = serializedObject.FindProperty("admobAppIdAndroid");
60
+
61
+ var dependencies = DependencyProvider.GetAllMediationNetworkDependencies(new IOSDependencyParser());
62
+ BlueStackSettings.Instance.NetworkList = BlueStackSettings.Instance.NetworkList
63
+ .Where(x => dependencies.All(l2 => l2.Name != x.Name)).ToList();
64
+ BlueStackSettings.Instance.NetworkList =
65
+ BlueStackSettings.Instance.NetworkList.Union(dependencies).ToList();
66
+
67
+ DependencyProvider.UpdateMediationNetworkDependencies(new IOSDependencyModifier(),
68
+ BlueStackSettings.Instance.NetworkList);
69
+ }
70
+
71
+ public override void OnInspectorGUI()
72
+ {
73
+ EditorGUI.BeginChangeCheck();
74
+ // serializedObject.Update();
75
+
76
+ EditorGUILayout.PropertyField(iOSAdmobAppIdProperty, new GUIContent("Admob AppId IOS: "));
77
+ EditorGUILayout.PropertyField(androidAdmobAppIdProperty, new GUIContent("Admob AppId Android: "));
78
+ EditorGUILayout.Separator();
79
+ EditorGUILayout.LabelField("Android Mediation Networks: ", EditorStyles.boldLabel);
80
+
81
+ foreach (var dependency in BlueStackSettings.Instance.NetworkList)
82
+ {
83
+ dependency.Print();
84
+ bool newAutomaticConfigurationFilesUpdate = GUILayout.Toggle(dependency.Active, dependency.Name);
85
+ if (newAutomaticConfigurationFilesUpdate != dependency.Active)
86
+ {
87
+ dependency.Active = newAutomaticConfigurationFilesUpdate;
88
+ }
89
+ }
90
+
91
+ if (EditorGUI.EndChangeCheck())
92
+ {
93
+ DependencyProvider.UpdateMediationNetworkDependencies(new IOSDependencyModifier(),
94
+ BlueStackSettings.Instance.NetworkList);
95
+ // serializedObject.ApplyModifiedProperties();
96
+ }
97
+
98
+ }
36
99
  }
37
100
  }
@@ -14,10 +14,10 @@ namespace Azerion.BlueStack.Editor
14
14
  throw new OperationCanceledException(prefix + message);
15
15
  #endif
16
16
  }
17
-
17
+
18
18
  public static void Log(string message)
19
19
  {
20
- Debug.Log("[BlueStack] "+message);
20
+ Debug.Log("[BlueStack] " + message);
21
21
  }
22
22
  }
23
23
  }
@@ -7,7 +7,7 @@ namespace Azerion.BlueStack.Editor
7
7
  Name = name;
8
8
  Version = version;
9
9
  }
10
-
10
+
11
11
  public string Name { get; }
12
12
  public string Version { get; }
13
13
  }
@@ -1,13 +1,224 @@
1
1
  using System.Collections.Generic;
2
+ using System.IO;
3
+ using System.Xml;
4
+ using UnityEditor;
5
+ using UnityEngine;
2
6
 
3
7
  namespace Azerion.BlueStack.Editor
4
8
  {
5
9
  public class DependencyProvider
6
10
  {
11
+ private static readonly string _dependencyPathInPackage =
12
+ "Packages/com.azerion.bluestack/Editor/" + "BlueStackDependencies.xml";
13
+
14
+ private static readonly string _mediationDependencyPathInPackage =
15
+ "Packages/com.azerion.bluestack/Editor/" + "BlueStackMediationDependencies.xml";
16
+
17
+ private static readonly string _editorPathInAssets = "Assets/Editor/";
18
+ private static readonly string _dependencyPathInAssets = _editorPathInAssets + "BlueStackDependencies.xml";
19
+
20
+ private static readonly string _mediationDependencyPathInAssets =
21
+ _editorPathInAssets + "BlueStackMediationDependencies.xml";
22
+
7
23
  public static List<Dependency> GetAllDependencies(IDependencyParser parser)
8
24
  {
9
- string dependencyXmlFilePath = "Packages/com.azerion.bluestack/Editor/" + "BlueStackDependencies.xml";
10
- return parser.parseDependencies(dependencyXmlFilePath);
25
+ if (File.Exists(_dependencyPathInPackage))
26
+ {
27
+ return parser.parseDependencies(_dependencyPathInPackage);
28
+ }
29
+ else
30
+ {
31
+ Debug.LogError("Dependencies file not found at: " + _dependencyPathInPackage);
32
+ return new List<Dependency>();
33
+ }
34
+ }
35
+
36
+ public static List<MediationNetworkDependency> GetAllMediationNetworkDependencies(IDependencyParser parser)
37
+ {
38
+ if (File.Exists(_mediationDependencyPathInAssets))
39
+ {
40
+ return parser.parseMediationNetworkDependencies(_mediationDependencyPathInAssets);
41
+ }
42
+ else
43
+ {
44
+ Debug.LogError("Dependencies file not found at: " + _mediationDependencyPathInAssets);
45
+ return new List<MediationNetworkDependency>();
46
+ }
47
+ }
48
+
49
+ public static void UpdateMediationNetworkDependencies(IDependencyModifier modifier,
50
+ List<MediationNetworkDependency> dependencies)
51
+ {
52
+ // Update Mediation Network Dependencies in BlueStackMediationDependencies.xml
53
+ if (File.Exists(_mediationDependencyPathInAssets))
54
+ {
55
+ modifier.modifyMediationNetworkDependencies(_mediationDependencyPathInAssets, dependencies);
56
+ }
57
+ else
58
+ {
59
+ Debug.LogError("Dependencies file not found at: " + _mediationDependencyPathInAssets);
60
+ }
61
+
62
+ // Update Mediation Network Dependencies in BlueStackDependencies.xml
63
+ if (File.Exists(_dependencyPathInAssets))
64
+ {
65
+ modifier.modifyDependencies(_dependencyPathInAssets, dependencies);
66
+ }
67
+ else
68
+ {
69
+ Debug.LogError("Dependencies file not found at: " + _dependencyPathInAssets);
70
+ }
71
+ }
72
+
73
+ public static void SyncMediationDependencyXML()
74
+ {
75
+ // if file doesn't exists, just copy from the source
76
+ CopyDependenciesXMLFileToAssets();
77
+ if (CopyMediationDependenciesXMLFileToAssets())
78
+ {
79
+ return;
80
+ }
81
+
82
+ XmlDocument mainDependencyXML = new XmlDocument();
83
+ mainDependencyXML.Load(_mediationDependencyPathInAssets);
84
+
85
+ XmlDocument updateDependencyXML = new XmlDocument();
86
+ updateDependencyXML.Load(_mediationDependencyPathInPackage);
87
+
88
+ if (!XMLStructuresMatch(mainDependencyXML, updateDependencyXML))
89
+ {
90
+ Debug.LogWarning("XML structures do not match. replacing main with update.");
91
+ SaveMainXMLFile(updateDependencyXML.OuterXml);
92
+ return;
93
+ }
94
+
95
+ // Update Main Dependency XML
96
+ // UpdateMainXML(mainDependencyXML, updateDependencyXML);
97
+ XmlNodeList updateNodes = updateDependencyXML.SelectNodes("//network");
98
+
99
+ if (updateNodes == null || updateNodes.Count < 1)
100
+ {
101
+ return;
102
+ }
103
+
104
+ foreach (XmlNode updateNode in updateNodes)
105
+ {
106
+ XmlNode mainNode = mainDependencyXML.SelectSingleNode($"//{updateNode.ParentNode.Name}/network[@name='{updateNode.Attributes["name"].Value}']");
107
+
108
+ if (mainNode == null)
109
+ {
110
+ // Node not in main.xml, add it
111
+ XmlNode importedNode = mainDependencyXML.ImportNode(updateNode, true);
112
+ mainDependencyXML.DocumentElement.SelectSingleNode($"//{updateNode.ParentNode.Name}")
113
+ .AppendChild(importedNode);
114
+ }
115
+ }
116
+
117
+ // Remove nodes in mainDependencyXML not present in updateDependencyXML
118
+ XmlNodeList mainNodes = mainDependencyXML.SelectNodes("//network");
119
+ foreach (XmlNode mainNode in mainNodes)
120
+ {
121
+ XmlNode updateNode =
122
+ updateDependencyXML.SelectSingleNode($"//network[@name='{mainNode.Attributes["name"].Value}']");
123
+
124
+ if (updateNode == null)
125
+ {
126
+ mainNode.ParentNode.RemoveChild(mainNode);
127
+ }
128
+ }
129
+
130
+ // Save the modified main XML
131
+ SaveMainXMLFile(mainDependencyXML.OuterXml);
132
+
133
+ Debug.Log("Mediation Dependency XML files merged and updated successfully.");
134
+ }
135
+
136
+ private static void CopyMediationDependencyXML()
137
+ {
138
+
139
+ }
140
+
141
+ public static void UpdateMediationDependencyXML(List<MediationNetworkDependency> dependencies)
142
+ {
143
+ // if file doesn't exists, return
144
+ if (!File.Exists(_mediationDependencyPathInAssets))
145
+ {
146
+ return;
147
+ }
148
+
149
+ XmlDocument mainDependencyXML = new XmlDocument();
150
+ mainDependencyXML.Load(_mediationDependencyPathInAssets);
151
+
152
+ foreach (MediationNetworkDependency dependency in dependencies)
153
+ {
154
+ XmlNode mainNode = mainDependencyXML.SelectSingleNode($"//network[@name='{dependency.Name}']");
155
+
156
+ if (mainNode != null)
157
+ {
158
+ mainNode.Attributes["active"].Value = dependency.Active.ToString();
159
+ }
160
+ else
161
+ {
162
+ // Node doesn't exists in Mediation Dependency XML
163
+ Debug.LogError("Something went wrong: Node doesn't exists in Mediation Dependency XML! " +
164
+ "Please check if you have manually changed the xml");
165
+ }
166
+ }
167
+
168
+ // Save the modified XML
169
+ SaveMainXMLFile(mainDependencyXML.OuterXml);
170
+
171
+ Debug.Log("Mediation Dependency XML files merged and updated successfully.");
172
+ }
173
+
174
+ private static bool XMLStructuresMatch(XmlDocument mainDoc, XmlDocument updateDoc)
175
+ {
176
+ string iosNodePath = "//networkList/iosNetworks";
177
+ XmlNode iosNetworksNode = mainDoc.SelectSingleNode(iosNodePath);
178
+
179
+ string androidNodePath = "//networkList/androidNetworks";
180
+ XmlNode androidNetworksNode = mainDoc.SelectSingleNode(androidNodePath);
181
+
182
+ if (iosNetworksNode == null || androidNetworksNode == null)
183
+ {
184
+ return false;
185
+ }
186
+ else
187
+ {
188
+ return true;
189
+ }
190
+ }
191
+
192
+ public static void SaveMainXMLFile(string updatedXML)
193
+ {
194
+ // Replace main mediation dependency XML content with the updated XML
195
+ System.IO.File.WriteAllText(_mediationDependencyPathInAssets, updatedXML);
196
+ AssetDatabase.Refresh();
197
+ }
198
+
199
+ public static bool CopyDependenciesXMLFileToAssets()
200
+ {
201
+ if (!File.Exists(_dependencyPathInAssets))
202
+ {
203
+ Directory.CreateDirectory(_editorPathInAssets);
204
+ FileUtil.CopyFileOrDirectory(_dependencyPathInPackage, _dependencyPathInAssets);
205
+ AssetDatabase.Refresh();
206
+ return true;
207
+ }
208
+
209
+ return false;
210
+ }
211
+
212
+ public static bool CopyMediationDependenciesXMLFileToAssets()
213
+ {
214
+ if (!File.Exists(_mediationDependencyPathInAssets))
215
+ {
216
+ Directory.CreateDirectory(_editorPathInAssets);
217
+ FileUtil.CopyFileOrDirectory(_mediationDependencyPathInPackage, _mediationDependencyPathInAssets);
218
+ AssetDatabase.Refresh();
219
+ return true;
220
+ }
221
+ return false;
11
222
  }
12
223
  }
13
224
  }
@@ -0,0 +1,12 @@
1
+ using System.Collections.Generic;
2
+
3
+ namespace Azerion.BlueStack.Editor
4
+ {
5
+ public interface IDependencyModifier
6
+ {
7
+ public void modifyDependencies(string xmlFilePath, List<MediationNetworkDependency> dependencies);
8
+
9
+ public void modifyMediationNetworkDependencies(string xmlFilePath,
10
+ List<MediationNetworkDependency> dependencies);
11
+ }
12
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: acea3014ea80241cfbaf2292132e1d25
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -5,5 +5,6 @@ namespace Azerion.BlueStack.Editor
5
5
  public interface IDependencyParser
6
6
  {
7
7
  public List<Dependency> parseDependencies(string xmlFilePath);
8
+ public List<MediationNetworkDependency> parseMediationNetworkDependencies(string xmlFilePath);
8
9
  }
9
10
  }
@@ -0,0 +1,34 @@
1
+ using System;
2
+ using UnityEngine;
3
+
4
+ namespace Azerion.BlueStack.Editor
5
+ {
6
+ [Serializable]
7
+ public class MediationNetworkDependency
8
+ {
9
+ public MediationNetworkDependency(string name, string package, bool active)
10
+ {
11
+ Name = name;
12
+ Package = package;
13
+ Active = active;
14
+ }
15
+
16
+ public string Name { get; set; }
17
+ public string Package { get; set; }
18
+
19
+ // [SerializeField]
20
+ public bool Active { get; set; }
21
+
22
+ // [SerializeField] private bool active;
23
+ // public bool Active
24
+ // {
25
+ // get => active;
26
+ // set => active = value;
27
+ // }
28
+
29
+ public void Print()
30
+ {
31
+ Debug.Log("Name: " + Name + "Package: " + Package + "Active: " + Active);
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,3 @@
1
+ fileFormatVersion: 2
2
+ guid: a4f9c0013a9c4aa8a10631761a602613
3
+ timeCreated: 1708551835
@@ -0,0 +1,12 @@
1
+ namespace Azerion.BlueStack.Editor.iOS
2
+ {
3
+ public class IOSDependency : Dependency
4
+ {
5
+ public string GradleDependency { get; }
6
+
7
+ public IOSDependency(string gradleDependency, string name, string version) : base(name, version)
8
+ {
9
+ GradleDependency = gradleDependency;
10
+ }
11
+ }
12
+ }