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.
- package/Editor/Android/AndroidBuildPostProcess.cs +0 -1
- package/Editor/Android/AndroidDependency.cs +1 -2
- package/Editor/Android/AndroidDependencyModifier.cs +55 -0
- package/Editor/Android/AndroidDependencyModifier.cs.meta +3 -0
- package/Editor/Android/AndroidDependencyParser.cs +26 -1
- package/Editor/Android/ManifestProcessor.cs +2 -1
- package/Editor/Azerion.BlueStack.Editor.asmdef +14 -14
- package/Editor/BlueStackDependencies.xml +1 -1
- package/Editor/BlueStackMediationDependencies.xml +11 -0
- package/Editor/BlueStackMediationDependencies.xml.meta +7 -0
- package/Editor/BlueStackSettings.cs +21 -18
- package/Editor/BlueStackSettingsEditor.cs +64 -1
- package/Editor/DebugHelper.cs +2 -2
- package/Editor/Dependency.cs +1 -1
- package/Editor/DependencyProvider.cs +213 -2
- package/Editor/IDependencyModifier.cs +12 -0
- package/Editor/IDependencyModifier.cs.meta +11 -0
- package/Editor/IDependencyParser.cs +1 -0
- package/Editor/MediationNetworkDependency.cs +34 -0
- package/Editor/MediationNetworkDependency.cs.meta +3 -0
- package/Editor/iOS/IOSDependency.cs +12 -0
- package/Editor/iOS/IOSDependency.cs.meta +11 -0
- package/Editor/iOS/IOSDependencyModifier.cs +105 -0
- package/Editor/iOS/IOSDependencyModifier.cs.meta +3 -0
- package/Editor/iOS/IOSDependencyParser.cs +32 -0
- package/Editor/iOS/PodDependency/PodDependencyUtils.cs +5 -1
- package/Example/Azerion.BlueStack.Example.asmdef +14 -14
- package/Example/Scripts/NativeAdManager.cs +5 -7
- package/Example/Scripts/SmallNativeAdManager.cs +4 -6
- package/README.md +4 -1
- package/Runtime/API/AdSize.cs +2 -2
- package/Runtime/API/Banner/BannerAd.cs +1 -1
- package/Runtime/API/BlueStackAds.cs +7 -3
- package/Runtime/API/InterstitialAd.cs +20 -5
- package/Runtime/API/NativeAd/NativeAd.cs +20 -26
- package/Runtime/API/NativeAd/NativeAdEventArgs.cs +1 -5
- package/Runtime/API/NativeAd/NativeAdInteractionHandler.cs +176 -173
- package/Runtime/API/NativeAd/NativeAdLoader.cs +10 -14
- package/Runtime/API/NativeAd/NativeAdObject.cs +563 -547
- package/Runtime/API/NativeAd/NativeAdType.cs +6 -6
- package/Runtime/API/NativeAd/NativeAssetInfo.cs +28 -28
- package/Runtime/Azerion.BlueStack.asmdef +14 -14
- package/Runtime/Common/NativeAd/AdLoaderClientArgs.cs +8 -8
- package/Runtime/Common/NativeAd/AdsEventExecutor.cs +69 -68
- package/Runtime/Common/NativeAd/DummyNativeClient.cs +52 -52
- package/Runtime/Common/NativeAd/NativeClientEventArgs.cs +5 -5
- package/Runtime/Common/NativeAd/NativeUtils.cs +111 -107
- package/Runtime/Internal/IBannerAdClient.cs +1 -1
- package/Runtime/Internal/IBlueStackClient.cs +2 -1
- package/Runtime/Internal/NativeAd/IAdLoaderClient.cs +12 -12
- package/Runtime/Internal/NativeAd/INativeAdClient.cs +1 -1
- package/Runtime/Internal/NativeAd/INativeClientFactory.cs +5 -5
- package/Runtime/Platforms/Android/BlueStackClient.cs +2 -1
- package/Runtime/Platforms/Android/BlueStackNativeClassNames.cs +2 -1
- package/Runtime/Platforms/Unity/AdvertisementManager.cs +5 -4
- package/Runtime/Platforms/Unity/BannerAdClient.cs +16 -9
- package/Runtime/Platforms/Unity/BaseAdClient.cs +7 -5
- package/Runtime/Platforms/Unity/BlueStackClient.cs +4 -3
- package/Runtime/Platforms/Unity/ClientsFactory.cs +0 -1
- package/Runtime/Platforms/Unity/InitializationStatusClient.cs +1 -0
- package/Runtime/Platforms/Unity/InterstitialAdClient.cs +12 -6
- package/Runtime/Platforms/Unity/NativeAdClient.cs +16 -10
- package/Runtime/Platforms/Unity/RewardedVideoAdClient.cs +9 -3
- package/Runtime/Platforms/Unity/Utils.cs +7 -3
- package/Runtime/Platforms/iOS/BannerAdClient.cs +33 -24
- package/Runtime/Platforms/iOS/BlueStackClient.cs +14 -10
- package/Runtime/Platforms/iOS/ClientsFactory.cs +0 -2
- package/Runtime/Platforms/iOS/Externs.cs +72 -65
- package/Runtime/Platforms/iOS/InitializationStatusClient.cs +6 -5
- package/Runtime/Platforms/iOS/InterstitialAdClient.cs +27 -21
- package/Runtime/Platforms/iOS/NativeAdClient.cs +27 -22
- package/Runtime/Platforms/iOS/PreferenceClient.cs +1 -1
- package/Runtime/Platforms/iOS/RewardedVideoAdClient.cs +27 -20
- package/Runtime/Platforms/iOS/Utils.cs +6 -3
- package/Runtime/Utilities/MiniJSON.cs +12 -12
- package/package.json +1 -1
- package/Editor/iOS/Dependency.cs +0 -0
- package/Editor/iOS/Dependency.cs.meta +0 -3
|
@@ -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
|
+
}
|
|
@@ -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",
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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.
|
|
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>
|
|
@@ -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
|
-
|
|
11
|
-
|
|
12
|
-
// #endif
|
|
13
|
-
[SerializeField] private string admobAppIdAndroid;
|
|
14
|
-
public string AdmobAppIdAndroid
|
|
11
|
+
[SerializeField] private string admobAppIdAndroid;
|
|
12
|
+
public string AdmobAppIdAndroid
|
|
15
13
|
{
|
|
16
|
-
get
|
|
17
|
-
set
|
|
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(
|
|
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
|
}
|
package/Editor/DebugHelper.cs
CHANGED
|
@@ -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
|
}
|
package/Editor/Dependency.cs
CHANGED
|
@@ -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
|
-
|
|
10
|
-
|
|
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,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,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
|
+
}
|