com.azerion.bluestack 3.1.9 → 3.2.0
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/CHANGELOG.md +24 -0
- package/Editor/Android/AndroidDependencyParser.cs +33 -21
- package/Editor/Android/Gradle/GradleConfigUtils.cs +1 -1
- package/Editor/BlueStackDependenciesSource.xml +38 -0
- package/Editor/BlueStackDependency.cs +30 -0
- package/Editor/{IDependencyModifier.cs.meta → BlueStackDependency.cs.meta} +1 -1
- package/Editor/BlueStackSettings.cs +18 -13
- package/Editor/BlueStackSettingsEditor.cs +101 -48
- package/Editor/DependencyCheckResult.cs +1 -1
- package/Editor/DependencyProvider.cs +87 -102
- package/Editor/IDependencyParser.cs +3 -3
- package/Editor/iOS/BlueStackBuildPostProcess.cs +85 -12
- package/Editor/iOS/IOSDependencyParser.cs +36 -24
- package/Plugins/Android/bluestack-unity-android-bridge-5.0.0.aar +0 -0
- package/Plugins/iOS/BSUAdSize.swift +33 -0
- package/Plugins/iOS/{BSUInitializtionStatus.m.meta → BSUAdSize.swift.meta} +1 -1
- package/Plugins/iOS/BSUBanner.h +9 -3
- package/Plugins/iOS/BSUBanner.swift +351 -0
- package/Plugins/iOS/{BSUInitializer.m.meta → BSUBanner.swift.meta} +1 -1
- package/Plugins/iOS/BSUInitializer.h +5 -5
- package/Plugins/iOS/BSUInitializer.swift +110 -0
- package/Plugins/iOS/{BSUAdNetworkStatus.m.meta → BSUInitializer.swift.meta} +1 -1
- package/Plugins/iOS/BSUInterface.h +21 -14
- package/Plugins/iOS/BSUInterface.m +61 -75
- package/Plugins/iOS/BSUInterstitialAd.h +1 -9
- package/Plugins/iOS/BSUInterstitialAd.swift +100 -0
- package/Plugins/iOS/{BSUBanner.m.meta → BSUInterstitialAd.swift.meta} +1 -1
- package/Plugins/iOS/BSUNativeAd.h +1 -1
- package/Plugins/iOS/BSUNativeAd.swift +122 -0
- package/Plugins/iOS/BSUNativeAd.swift.meta +37 -0
- package/Plugins/iOS/BSUObjectCache.swift +57 -0
- package/Plugins/iOS/BSUObjectCache.swift.meta +37 -0
- package/Plugins/iOS/BSUPluginUtil.swift +23 -0
- package/Plugins/iOS/BSUPluginUtil.swift.meta +37 -0
- package/Plugins/iOS/BSURequestOptions.h +14 -0
- package/Plugins/iOS/{BSUAdNetworkStatus.h.meta → BSURequestOptions.h.meta} +1 -1
- package/Plugins/iOS/BSURequestOptions.swift +57 -0
- package/Plugins/iOS/BSURequestOptions.swift.meta +37 -0
- package/Plugins/iOS/BSURewardedVideoAd.h +1 -5
- package/Plugins/iOS/BSURewardedVideoAd.h.meta +25 -1
- package/Plugins/iOS/BSURewardedVideoAd.swift +108 -0
- package/Plugins/iOS/BSURewardedVideoAd.swift.meta +37 -0
- package/Plugins/iOS/BSUSettings.swift +13 -0
- package/Plugins/iOS/BSUSettings.swift.meta +37 -0
- package/Plugins/iOS/BSUTypes.h +1 -44
- package/Plugins/iOS/BSUTypes.swift +60 -0
- package/Plugins/iOS/BSUTypes.swift.meta +37 -0
- package/Plugins/iOS/UnityFramework.modulemap +12 -0
- package/{Editor/BlueStackMediationNetworks.xml.meta → Plugins/iOS/UnityFramework.modulemap.meta} +2 -2
- package/Runtime/API/AdSize.cs +7 -7
- package/Runtime/API/NativeAd/NativeAd.cs +59 -12
- package/Runtime/API/Rewarded/Reward.cs +15 -0
- package/Runtime/API/Rewarded/Reward.cs.meta +3 -0
- package/Runtime/Common/NativeAd/AdsEventExecutor.cs +1 -0
- package/Runtime/Common/NativeAd/NativeUtils.cs +10 -10
- package/Runtime/Internal/IPreferenceClient.cs +1 -1
- package/Runtime/Platforms/Android/BannerAdClient.cs +7 -2
- package/Runtime/Platforms/Android/BlueStackClient.cs +104 -7
- package/Runtime/Platforms/Android/BlueStackNativeClassNames.cs +12 -7
- package/Runtime/Platforms/Android/NativeAdClient.cs +1 -0
- package/Runtime/Platforms/Android/PreferenceClient.cs +6 -6
- package/Runtime/Platforms/Android/RewardedVideoAdClient.cs +2 -1
- package/Runtime/Platforms/iOS/BannerAdClient.cs +2 -2
- package/Runtime/Platforms/iOS/Externs.cs +13 -14
- package/Runtime/Platforms/iOS/InterstitialAdClient.cs +1 -1
- package/Runtime/Platforms/iOS/NativeAdClient.cs +1 -1
- package/Runtime/Platforms/iOS/PreferenceClient.cs +11 -11
- package/Runtime/Platforms/iOS/RewardedVideoAdClient.cs +1 -1
- package/package.json +1 -1
- package/Editor/Android/AndroidDependencyModifier.cs +0 -125
- package/Editor/Android/AndroidDependencyModifier.cs.meta +0 -3
- package/Editor/BlueStackDependencies.xml +0 -12
- package/Editor/BlueStackMediationNetworks.xml +0 -31
- package/Editor/IDependencyModifier.cs +0 -12
- package/Editor/MediationNetworkDependency.cs +0 -28
- package/Editor/MediationNetworkDependency.cs.meta +0 -3
- package/Editor/iOS/DependencyProvider.cs +0 -0
- package/Editor/iOS/DependencyProvider.cs.meta +0 -3
- package/Editor/iOS/IDependencyParser.cs +0 -0
- package/Editor/iOS/IDependencyParser.cs.meta +0 -3
- package/Editor/iOS/IOSDependencyModifier.cs +0 -107
- package/Editor/iOS/IOSDependencyModifier.cs.meta +0 -3
- package/Plugins/Android/bluestack-unity-android-bridge-2.0.0.aar +0 -0
- package/Plugins/iOS/BSUAdNetworkStatus.h +0 -29
- package/Plugins/iOS/BSUAdNetworkStatus.m +0 -23
- package/Plugins/iOS/BSUBanner.m +0 -344
- package/Plugins/iOS/BSUInitializer.m +0 -63
- package/Plugins/iOS/BSUInitializtionStatus.h +0 -21
- package/Plugins/iOS/BSUInitializtionStatus.h.meta +0 -27
- package/Plugins/iOS/BSUInitializtionStatus.m +0 -13
- package/Plugins/iOS/BSUInterstitialAd.m +0 -94
- package/Plugins/iOS/BSUInterstitialAd.m.meta +0 -37
- package/Plugins/iOS/BSUNativeAd.m +0 -113
- package/Plugins/iOS/BSUNativeAd.m.meta +0 -37
- package/Plugins/iOS/BSUObjectCache.m +0 -78
- package/Plugins/iOS/BSUObjectCache.m.meta +0 -37
- package/Plugins/iOS/BSUPluginUtil.m +0 -40
- package/Plugins/iOS/BSUPluginUtil.m.meta +0 -37
- package/Plugins/iOS/BSURewardedVideoAd.m +0 -98
- package/Plugins/iOS/BSURewardedVideoAd.m.meta +0 -3
- package/Plugins/iOS/BSUSettings.m +0 -12
- package/Plugins/iOS/BSUSettings.m.meta +0 -37
- /package/Editor/{BlueStackDependencies.xml.meta → BlueStackDependenciesSource.xml.meta} +0 -0
- /package/Plugins/Android/{bluestack-unity-android-bridge-2.0.0.aar.meta → bluestack-unity-android-bridge-5.0.0.aar.meta} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [3.2.0] - 2025-06-16
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- BlueStack Android Core SDK version upgraded to 5.1.3
|
|
8
|
+
- BlueStack iOS Core SDK version upgraded to 5.1.4
|
|
9
|
+
- Implemented API changes of native core SDK v5
|
|
10
|
+
- iOS dependency management has been updated in the Unity Editor, mediation adapters are now added as separate pods in the Podfile.
|
|
11
|
+
- A single source of truth is now used for dependency management, removing the need for separate dependency XML files for Mediation networks.
|
|
12
|
+
|
|
13
|
+
## [3.1.10] - 2024-11-15
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- Updated the iOS Post Processor to include AdMob App IDs based on the inclusion of AdMob mediation adapters.
|
|
18
|
+
- onIOSMediationNetworksUpdateEvent will trigger after changes to Settings serializedObject properties are applied.
|
|
19
|
+
|
|
20
|
+
### fixed
|
|
21
|
+
|
|
22
|
+
- Fixed the subspec inclusion process in the Podfile to ensure the full subspec string is removed when no adapters are selected and the subspec array is empty.
|
|
23
|
+
- Fixed a Null Reference issue by updating the Destroy and distractor methods for Native Ads.
|
|
24
|
+
|
|
3
25
|
## [3.1.9] - 2024-11-07
|
|
4
26
|
|
|
5
27
|
### fixed
|
|
@@ -16,6 +38,7 @@
|
|
|
16
38
|
|
|
17
39
|
### Changed
|
|
18
40
|
|
|
41
|
+
- Removed `Rewarded` namespace
|
|
19
42
|
- Renamed the `GetBadge` method to `GetBadgeText`
|
|
20
43
|
- Renamed the `GetTitle` method to `GetTitleText`
|
|
21
44
|
- Renamed the `RegisterImageGameObject` method to `RegisterCoverImageGameObject`
|
|
@@ -115,6 +138,7 @@
|
|
|
115
138
|
### Changed
|
|
116
139
|
|
|
117
140
|
- BlueStack iOS SDK version updated to 4.3.0
|
|
141
|
+
- Native Ad support for iOS
|
|
118
142
|
- Editor Settings: Both iOS and Android admob id fields are together
|
|
119
143
|
|
|
120
144
|
## [3.0.0] - 2023-10-13
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
using System.Collections.Generic;
|
|
2
|
+
using System.IO;
|
|
2
3
|
using System.Xml;
|
|
3
4
|
using UnityEngine;
|
|
4
5
|
|
|
@@ -6,48 +7,59 @@ namespace Azerion.BlueStack.Editor.Android
|
|
|
6
7
|
{
|
|
7
8
|
public class AndroidDependencyParser : IDependencyParser
|
|
8
9
|
{
|
|
9
|
-
List<Dependency> IDependencyParser.
|
|
10
|
+
List<Dependency> IDependencyParser.ParseDependencies(string xmlFilePath)
|
|
10
11
|
{
|
|
11
12
|
var xmlDoc = new XmlDocument();
|
|
12
13
|
xmlDoc.Load(xmlFilePath);
|
|
13
14
|
const string xmlPathPattern = "//dependencies/androidPackages";
|
|
14
15
|
var androidPackagesNode = xmlDoc.SelectSingleNode(xmlPathPattern);
|
|
15
16
|
var dependencies = new List<Dependency>();
|
|
16
|
-
if (androidPackagesNode == null)
|
|
17
|
+
if (androidPackagesNode == null)
|
|
18
|
+
return dependencies;
|
|
17
19
|
foreach (XmlNode androidPackageNode in androidPackagesNode.ChildNodes)
|
|
18
20
|
{
|
|
19
21
|
var specAttribute = androidPackageNode.Attributes?["spec"];
|
|
20
|
-
if (specAttribute == null)
|
|
22
|
+
if (specAttribute == null)
|
|
23
|
+
continue;
|
|
21
24
|
dependencies.Add(new AndroidDependency(specAttribute.Value, "", ""));
|
|
22
25
|
}
|
|
23
26
|
return dependencies;
|
|
24
27
|
}
|
|
25
28
|
|
|
26
|
-
List<
|
|
29
|
+
List<BlueStackDependency> IDependencyParser.ParseBlueStackDependencies(
|
|
30
|
+
string xmlFilePath,
|
|
31
|
+
HashSet<string> activeNames
|
|
32
|
+
)
|
|
27
33
|
{
|
|
34
|
+
if (!File.Exists(xmlFilePath))
|
|
35
|
+
{
|
|
36
|
+
Debug.LogError("Dependencies file not found at: " + xmlFilePath);
|
|
37
|
+
return new List<BlueStackDependency>();
|
|
38
|
+
}
|
|
39
|
+
|
|
28
40
|
var xmlDoc = new XmlDocument();
|
|
29
41
|
xmlDoc.Load(xmlFilePath);
|
|
30
|
-
const string xmlPathPattern = "//
|
|
42
|
+
const string xmlPathPattern = "//dependencies/androidPackages";
|
|
31
43
|
var androidPackagesNode = xmlDoc.SelectSingleNode(xmlPathPattern);
|
|
32
|
-
var dependencies = new List<
|
|
33
|
-
if (androidPackagesNode == null)
|
|
44
|
+
var dependencies = new List<BlueStackDependency>();
|
|
45
|
+
if (androidPackagesNode == null)
|
|
46
|
+
return dependencies;
|
|
34
47
|
foreach (XmlNode androidPackageNode in androidPackagesNode.ChildNodes)
|
|
35
48
|
{
|
|
36
|
-
var
|
|
37
|
-
var
|
|
38
|
-
var
|
|
39
|
-
var
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
: new MediationNetworkDependency(name, package, active));
|
|
49
|
+
var aliasAttribute = androidPackageNode.Attributes?["alias"];
|
|
50
|
+
var specAttribute = androidPackageNode.Attributes?["spec"];
|
|
51
|
+
var versionAttribute = androidPackageNode.Attributes?["version"];
|
|
52
|
+
var alias = aliasAttribute != null ? aliasAttribute.Value : specAttribute?.Value;
|
|
53
|
+
var name = specAttribute?.Value;
|
|
54
|
+
var version = versionAttribute?.Value;
|
|
55
|
+
if (name == null)
|
|
56
|
+
continue;
|
|
57
|
+
bool active = activeNames != null && activeNames.Contains(name);
|
|
58
|
+
dependencies.Add(
|
|
59
|
+
new BlueStackDependency(alias, name, version, androidPackageNode, active)
|
|
60
|
+
);
|
|
49
61
|
}
|
|
50
62
|
return dependencies;
|
|
51
63
|
}
|
|
52
64
|
}
|
|
53
|
-
}
|
|
65
|
+
}
|
|
@@ -66,7 +66,7 @@ namespace Azerion.BlueStack.Editor.Android.Gradle
|
|
|
66
66
|
String[] gradleLines = File.ReadAllLines(gradleFilePath);
|
|
67
67
|
var isFound = false;
|
|
68
68
|
var androidMavenDependency = "";
|
|
69
|
-
var dependencies = DependencyProvider.
|
|
69
|
+
var dependencies = DependencyProvider.GetDependencies(new AndroidDependencyParser());
|
|
70
70
|
foreach (var dependency in dependencies)
|
|
71
71
|
{
|
|
72
72
|
var androidDependency = (AndroidDependency)dependency;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<dependencies version="3.1.10">
|
|
2
|
+
<androidPackages>
|
|
3
|
+
<androidPackage alias="BlueStack" spec="com.azerion:bluestack-sdk-core:5.1.3">
|
|
4
|
+
<repositories>
|
|
5
|
+
<repository>https://packagecloud.io/smartadserver/android/maven2</repository>
|
|
6
|
+
<repository>https://s01.oss.sonatype.org/content/repositories/snapshots/</repository>
|
|
7
|
+
</repositories>
|
|
8
|
+
</androidPackage>
|
|
9
|
+
<androidPackage alias="Criteo In-App Bidding" spec="com.azerion:bluestack-mediation-criteo:4.4.0.0"/>
|
|
10
|
+
<androidPackage alias="AdColony" spec="com.azerion:bluestack-mediation-adcolony:4.4.0.0"/>
|
|
11
|
+
<androidPackage alias="Huawei" spec="com.azerion:bluestack-mediation-huawei:4.4.0.0">
|
|
12
|
+
<repositories>
|
|
13
|
+
<repository>https://developer.huawei.com/repo/</repository>
|
|
14
|
+
</repositories>
|
|
15
|
+
</androidPackage>
|
|
16
|
+
<androidPackage alias="GAM / AdMob" spec="com.azerion:bluestack-mediation-gma:4.4.0.0"/>
|
|
17
|
+
<androidPackage alias="In-App Bidding" spec="com.azerion:bluestack-mediation-bidding:4.4.0.0">
|
|
18
|
+
<repositories>
|
|
19
|
+
<repository>https://packagecloud.io/smartadserver/android/maven2</repository>
|
|
20
|
+
</repositories>
|
|
21
|
+
</androidPackage>
|
|
22
|
+
<androidPackage alias="Smart Display / Equativ" spec="com.azerion:bluestack-mediation-smartadserver:4.4.0.0">
|
|
23
|
+
<repositories>
|
|
24
|
+
<repository>https://packagecloud.io/smartadserver/android/maven2</repository>
|
|
25
|
+
</repositories>
|
|
26
|
+
</androidPackage>
|
|
27
|
+
<androidPackage alias="Ogury" spec="com.azerion:bluestack-mediation-ogury:4.4.0.0">
|
|
28
|
+
<repositories>
|
|
29
|
+
<repository>https://maven.ogury.co/</repository>
|
|
30
|
+
</repositories>
|
|
31
|
+
</androidPackage>
|
|
32
|
+
</androidPackages>
|
|
33
|
+
<iosPods>
|
|
34
|
+
<iosPod alias="BlueStack" name="BlueStack-SDK" version="5.1.4" bitcodeEnabled="false" addToAllTargets="false"/>
|
|
35
|
+
<iosPod alias="AdMob" name="BlueStackGoogleAdapter" version="5.1.4.0" bitcodeEnabled="false" addToAllTargets="false"/>
|
|
36
|
+
<iosPod alias="Equativ" name="BlueStackEquativAdapter" version="5.1.4.0" bitcodeEnabled="false" addToAllTargets="false"/>
|
|
37
|
+
</iosPods>
|
|
38
|
+
</dependencies>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
using System;
|
|
2
|
+
using System.Xml;
|
|
3
|
+
|
|
4
|
+
namespace Azerion.BlueStack.Editor
|
|
5
|
+
{
|
|
6
|
+
[Serializable]
|
|
7
|
+
public class BlueStackDependency
|
|
8
|
+
{
|
|
9
|
+
public BlueStackDependency(
|
|
10
|
+
string alias,
|
|
11
|
+
string name,
|
|
12
|
+
string version,
|
|
13
|
+
XmlNode packageNode,
|
|
14
|
+
bool active = false
|
|
15
|
+
)
|
|
16
|
+
{
|
|
17
|
+
Alias = alias;
|
|
18
|
+
Name = name;
|
|
19
|
+
Version = version;
|
|
20
|
+
PackageNode = packageNode;
|
|
21
|
+
Active = active;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public string Alias { get; set; }
|
|
25
|
+
public string Name { get; set; }
|
|
26
|
+
public string Version { get; set; }
|
|
27
|
+
public XmlNode PackageNode { get; set; }
|
|
28
|
+
public bool Active { get; set; }
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -8,32 +8,36 @@ namespace Azerion.BlueStack.Editor
|
|
|
8
8
|
private static BlueStackSettings instance;
|
|
9
9
|
private const string BlueStackSettingsFile = "BlueStackSettings";
|
|
10
10
|
|
|
11
|
-
[SerializeField]
|
|
11
|
+
[SerializeField]
|
|
12
|
+
private string admobAppIdAndroid;
|
|
12
13
|
public string AdmobAppIdAndroid
|
|
13
14
|
{
|
|
14
15
|
get => Instance.admobAppIdAndroid;
|
|
15
16
|
set => Instance.admobAppIdAndroid = value;
|
|
16
17
|
}
|
|
17
18
|
|
|
18
|
-
[SerializeField]
|
|
19
|
+
[SerializeField]
|
|
20
|
+
private string admobAppIdIOS;
|
|
19
21
|
public string AdmobAppIdIOS
|
|
20
22
|
{
|
|
21
23
|
get => Instance.admobAppIdIOS;
|
|
22
24
|
set => Instance.admobAppIdIOS = value;
|
|
23
25
|
}
|
|
24
26
|
|
|
25
|
-
[SerializeField]
|
|
26
|
-
|
|
27
|
+
[SerializeField]
|
|
28
|
+
private List<BlueStackDependency> iOSDependencies;
|
|
29
|
+
public List<BlueStackDependency> IOSDependencies
|
|
27
30
|
{
|
|
28
|
-
get => Instance.
|
|
29
|
-
set => Instance.
|
|
31
|
+
get => Instance.iOSDependencies ?? new List<BlueStackDependency>();
|
|
32
|
+
set => Instance.iOSDependencies = value;
|
|
30
33
|
}
|
|
31
|
-
|
|
32
|
-
[SerializeField]
|
|
33
|
-
|
|
34
|
+
|
|
35
|
+
[SerializeField]
|
|
36
|
+
private List<BlueStackDependency> androidDependencies;
|
|
37
|
+
public List<BlueStackDependency> AndroidDependencies
|
|
34
38
|
{
|
|
35
|
-
get => Instance.
|
|
36
|
-
set => Instance.
|
|
39
|
+
get => Instance.androidDependencies ?? new List<BlueStackDependency>();
|
|
40
|
+
set => Instance.androidDependencies = value;
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
public static BlueStackSettings Instance
|
|
@@ -54,11 +58,12 @@ namespace Azerion.BlueStack.Editor
|
|
|
54
58
|
else
|
|
55
59
|
{
|
|
56
60
|
Debug.LogWarning(
|
|
57
|
-
"BlueStackSettings asset not found! Create new via Azerion/BlueStack/Settings menu"
|
|
61
|
+
"BlueStackSettings asset not found! Create new via Azerion/BlueStack/Settings menu"
|
|
62
|
+
);
|
|
58
63
|
return null;
|
|
59
64
|
}
|
|
60
65
|
}
|
|
61
66
|
set => instance = value;
|
|
62
67
|
}
|
|
63
68
|
}
|
|
64
|
-
}
|
|
69
|
+
}
|
|
@@ -5,6 +5,8 @@ using UnityEditor;
|
|
|
5
5
|
using UnityEngine;
|
|
6
6
|
using Azerion.BlueStack.Editor.Android;
|
|
7
7
|
using Azerion.BlueStack.Editor.iOS;
|
|
8
|
+
using System.Linq;
|
|
9
|
+
using System.Xml;
|
|
8
10
|
|
|
9
11
|
namespace Azerion.BlueStack.Editor
|
|
10
12
|
{
|
|
@@ -14,15 +16,15 @@ namespace Azerion.BlueStack.Editor
|
|
|
14
16
|
private const string BlueStackSettingsResDir = "Assets/Resources";
|
|
15
17
|
private const string BlueStackSettingsFile = "BlueStackSettings";
|
|
16
18
|
private const string BlueStackSettingsFileExtension = ".asset";
|
|
17
|
-
|
|
19
|
+
|
|
18
20
|
SerializedProperty iOSMediationNetworkListProperty;
|
|
19
21
|
SerializedProperty androidMediationNetworkListProperty;
|
|
20
22
|
|
|
21
23
|
SerializedProperty iOSAdmobAppIdProperty;
|
|
22
24
|
SerializedProperty androidAdmobAppIdProperty;
|
|
23
25
|
|
|
24
|
-
public static event EventHandler<List<
|
|
25
|
-
public static event EventHandler<List<
|
|
26
|
+
public static event EventHandler<List<BlueStackDependency>> OnIOSDependenciesUpdateEvent;
|
|
27
|
+
public static event EventHandler<List<BlueStackDependency>> OnAndroidDependenciesUpdateEvent;
|
|
26
28
|
|
|
27
29
|
[MenuItem("Azerion/BlueStack/Settings")]
|
|
28
30
|
public static void OpenInspector()
|
|
@@ -42,10 +44,14 @@ namespace Azerion.BlueStack.Editor
|
|
|
42
44
|
try
|
|
43
45
|
{
|
|
44
46
|
Directory.CreateDirectory(BlueStackSettingsResDir);
|
|
45
|
-
BlueStackSettings.Instance =
|
|
47
|
+
BlueStackSettings.Instance =
|
|
48
|
+
ScriptableObject.CreateInstance<BlueStackSettings>();
|
|
46
49
|
|
|
47
50
|
string assetPath = Path.Combine(BlueStackSettingsResDir, BlueStackSettingsFile);
|
|
48
|
-
string assetPathWithExtension = Path.ChangeExtension(
|
|
51
|
+
string assetPathWithExtension = Path.ChangeExtension(
|
|
52
|
+
assetPath,
|
|
53
|
+
BlueStackSettingsFileExtension
|
|
54
|
+
);
|
|
49
55
|
AssetDatabase.CreateAsset(BlueStackSettings.Instance, assetPathWithExtension);
|
|
50
56
|
AssetDatabase.SaveAssets();
|
|
51
57
|
|
|
@@ -82,25 +88,19 @@ namespace Azerion.BlueStack.Editor
|
|
|
82
88
|
|
|
83
89
|
public static void Initialize()
|
|
84
90
|
{
|
|
85
|
-
if (!DoesBlueStackSettingsExist())
|
|
86
|
-
|
|
87
|
-
BlueStackSettings.Instance.IOSMediationNetworks.Clear();
|
|
88
|
-
BlueStackSettings.Instance.AndroidMediationNetworks.Clear();
|
|
89
|
-
|
|
90
|
-
// Sync/Copy base mediation dependency xml file from Package to Assets directory
|
|
91
|
-
DependencyProvider.SyncDependenciesXMLs();
|
|
91
|
+
if (!DoesBlueStackSettingsExist())
|
|
92
|
+
return;
|
|
92
93
|
|
|
93
|
-
|
|
94
|
-
|
|
94
|
+
BlueStackSettings.Instance.IOSDependencies.Clear();
|
|
95
|
+
BlueStackSettings.Instance.AndroidDependencies.Clear();
|
|
95
96
|
|
|
96
|
-
|
|
97
|
-
BlueStackSettings.Instance.IOSMediationNetworks = iOSMediationNetworkDependencies;
|
|
97
|
+
DependencyProvider.SyncDependenciesXMLs();
|
|
98
98
|
|
|
99
|
-
DependencyProvider.
|
|
100
|
-
|
|
101
|
-
DependencyProvider.UpdateMediationNetworkDependencies(new IOSDependencyModifier(),
|
|
102
|
-
BlueStackSettings.Instance.IOSMediationNetworks);
|
|
99
|
+
var androidDependencies = DependencyProvider.GetBlueStackDependencies(new AndroidDependencyParser());
|
|
100
|
+
var iOSDependencies = DependencyProvider.GetBlueStackDependencies(new IOSDependencyParser());
|
|
103
101
|
|
|
102
|
+
BlueStackSettings.Instance.AndroidDependencies = androidDependencies;
|
|
103
|
+
BlueStackSettings.Instance.IOSDependencies = iOSDependencies;
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
public override void OnInspectorGUI()
|
|
@@ -111,51 +111,104 @@ namespace Azerion.BlueStack.Editor
|
|
|
111
111
|
androidAdmobAppIdProperty = serializedObject.FindProperty("admobAppIdAndroid");
|
|
112
112
|
iOSAdmobAppIdProperty = serializedObject.FindProperty("admobAppIdIOS");
|
|
113
113
|
|
|
114
|
-
EditorGUILayout.PropertyField(
|
|
115
|
-
|
|
114
|
+
EditorGUILayout.PropertyField(
|
|
115
|
+
androidAdmobAppIdProperty,
|
|
116
|
+
new GUIContent("Admob AppId Android: ")
|
|
117
|
+
);
|
|
118
|
+
EditorGUILayout.PropertyField(
|
|
119
|
+
iOSAdmobAppIdProperty,
|
|
120
|
+
new GUIContent("Admob AppId IOS: ")
|
|
121
|
+
);
|
|
116
122
|
|
|
117
|
-
// Android
|
|
123
|
+
// Android Dependencies
|
|
118
124
|
EditorGUILayout.Separator();
|
|
119
|
-
EditorGUILayout.LabelField("Android
|
|
120
|
-
|
|
121
|
-
foreach (var
|
|
125
|
+
EditorGUILayout.LabelField("Android Dependencies:", EditorStyles.boldLabel);
|
|
126
|
+
var androidToggles = new List<(BlueStackDependency dep, bool newActive)>();
|
|
127
|
+
foreach (var dep in BlueStackSettings.Instance.AndroidDependencies)
|
|
122
128
|
{
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
if (newAutomaticConfigurationFilesUpdate != dependency.IsActive)
|
|
129
|
+
bool newActive = GUILayout.Toggle(dep.Active, dep.Alias ?? dep.Name);
|
|
130
|
+
if (newActive != dep.Active)
|
|
126
131
|
{
|
|
127
|
-
|
|
132
|
+
androidToggles.Add((dep, newActive));
|
|
128
133
|
}
|
|
129
134
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
135
|
+
foreach (var (dep, newActive) in androidToggles)
|
|
136
|
+
{
|
|
137
|
+
UpdateDependencyActiveState(dep, newActive, isIOS: false);
|
|
138
|
+
}
|
|
134
139
|
|
|
135
|
-
|
|
140
|
+
// iOS Dependencies
|
|
141
|
+
EditorGUILayout.Separator();
|
|
142
|
+
EditorGUILayout.LabelField("iOS Dependencies:", EditorStyles.boldLabel);
|
|
143
|
+
var iosToggles = new List<(BlueStackDependency dep, bool newActive)>();
|
|
144
|
+
foreach (var dep in BlueStackSettings.Instance.IOSDependencies)
|
|
136
145
|
{
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
if (newAutomaticConfigurationFilesUpdate != dependency.IsActive)
|
|
146
|
+
bool newActive = GUILayout.Toggle(dep.Active, dep.Alias ?? dep.Name);
|
|
147
|
+
if (newActive != dep.Active)
|
|
140
148
|
{
|
|
141
|
-
|
|
149
|
+
iosToggles.Add((dep, newActive));
|
|
142
150
|
}
|
|
143
151
|
}
|
|
152
|
+
foreach (var (dep, newActive) in iosToggles)
|
|
153
|
+
{
|
|
154
|
+
UpdateDependencyActiveState(dep, newActive, isIOS: true);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
bool anyAndroidChanged = androidToggles.Count > 0;
|
|
158
|
+
bool anyIOSChanged = iosToggles.Count > 0;
|
|
144
159
|
|
|
145
160
|
if (EditorGUI.EndChangeCheck())
|
|
146
161
|
{
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
162
|
+
serializedObject.ApplyModifiedProperties();
|
|
163
|
+
if (anyAndroidChanged && OnAndroidDependenciesUpdateEvent != null)
|
|
164
|
+
{
|
|
165
|
+
OnAndroidDependenciesUpdateEvent.Invoke(this,BlueStackSettings.Instance.AndroidDependencies);
|
|
166
|
+
}
|
|
167
|
+
if (anyIOSChanged && OnIOSDependenciesUpdateEvent != null)
|
|
168
|
+
{
|
|
169
|
+
OnIOSDependenciesUpdateEvent.Invoke(this,BlueStackSettings.Instance.IOSDependencies);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
150
173
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
174
|
+
private void UpdateDependencyActiveState(BlueStackDependency dep, bool isActive, bool isIOS)
|
|
175
|
+
{
|
|
176
|
+
// Load the asset XML
|
|
177
|
+
var xmlDoc = new XmlDocument();
|
|
178
|
+
xmlDoc.Load("Assets/Editor/BlueStackDependencies.xml");
|
|
179
|
+
string nodePath = isIOS ? "//dependencies/iosPods" : "//dependencies/androidPackages";
|
|
180
|
+
var parentNode = xmlDoc.SelectSingleNode(nodePath);
|
|
181
|
+
if (parentNode == null)
|
|
182
|
+
return;
|
|
183
|
+
|
|
184
|
+
// Find the node by name
|
|
185
|
+
XmlNode found = null;
|
|
186
|
+
foreach (XmlNode node in parentNode.ChildNodes)
|
|
187
|
+
{
|
|
188
|
+
var nameAttr = isIOS ? node.Attributes?["name"] : node.Attributes?["spec"];
|
|
189
|
+
if (nameAttr != null && nameAttr.Value == dep.Name)
|
|
190
|
+
{
|
|
191
|
+
found = node;
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
155
195
|
|
|
156
|
-
|
|
196
|
+
if (isActive && found == null)
|
|
197
|
+
{
|
|
198
|
+
// Add node
|
|
199
|
+
var imported = xmlDoc.ImportNode(dep.PackageNode, true);
|
|
200
|
+
parentNode.AppendChild(imported);
|
|
201
|
+
}
|
|
202
|
+
else if (!isActive && found != null)
|
|
203
|
+
{
|
|
204
|
+
// Remove node
|
|
205
|
+
parentNode.RemoveChild(found);
|
|
157
206
|
}
|
|
158
207
|
|
|
208
|
+
// Save changes
|
|
209
|
+
DependencyProvider.SaveDependenciesXMLFile(xmlDoc.OuterXml);
|
|
210
|
+
// Update the in-memory state
|
|
211
|
+
dep.Active = isActive;
|
|
159
212
|
}
|
|
160
213
|
}
|
|
161
|
-
}
|
|
214
|
+
}
|