com.amanotes.gdk 0.2.86 → 0.2.88

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 (41) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/Editor/AmaGDKEditor.cs +3 -1
  3. package/Editor/Extra/GDKCIBuildCommand.cs +19 -2
  4. package/Editor/Extra/GDKLocalBuild.cs +25 -1
  5. package/Editor/Extra/GDKPostBuildAsset.cs +21 -3
  6. package/Editor/Utils/AmaGDKEditor.ExtractVersion.Max.cs +7 -0
  7. package/Extra/AmaGDKInstaller.unitypackage +0 -0
  8. package/Extra/AutoEventQC.unitypackage +0 -0
  9. package/Extra/CheckDiskSpace.unitypackage +0 -0
  10. package/Extra/Consent.unitypackage +0 -0
  11. package/Extra/CrashlyticHook.unitypackage +0 -0
  12. package/Extra/ForceUpdate.unitypackage +0 -0
  13. package/Extra/LegacyGDKUpdateHelper.unitypackage +0 -0
  14. package/Extra/PostProcessor.unitypackage +0 -0
  15. package/Packages/AmaGDKConfig.unitypackage +0 -0
  16. package/Packages/AmaGDKExample.unitypackage +0 -0
  17. package/Packages/AmaGDKTest.unitypackage +0 -0
  18. package/Packages/AppsFlyerAdapter.PurchaseConnector.unitypackage +0 -0
  19. package/Packages/AppsFlyerAdapter.unitypackage +0 -0
  20. package/Packages/FirebaseAnalyticsAdapter.unitypackage +0 -0
  21. package/Packages/FirebaseRemoteConfigAdapter.unitypackage +0 -0
  22. package/Packages/IronSourceAdapter.AdQuality.unitypackage +0 -0
  23. package/Packages/IronSourceAdapter.unitypackage +0 -0
  24. package/Packages/MaxAdNetworkAdapter.unitypackage +0 -0
  25. package/Packages/RevenueCatAdapter.unitypackage +0 -0
  26. package/Packages/SqliteAnalyticsAdapter.unitypackage +0 -0
  27. package/Runtime/Ad/AdLogic.cs +222 -147
  28. package/Runtime/AmaGDK.Analytics.cs +105 -65
  29. package/Runtime/AmaGDK.RemoteConfig.cs +50 -40
  30. package/Runtime/AmaGDK.cs +1 -1
  31. package/Runtime/AnalyticQualityAsset.cs +69 -38
  32. package/Runtime/AudioToolkit/Plugins/AudioDeviceDetector.cs +31 -17
  33. package/Runtime/Core/GDKSemVer.cs +23 -26
  34. package/Runtime/Fps/AmaFPSVisualizer.cs +48 -26
  35. package/Runtime/Internal/AmaGDK.Utils.cs +90 -46
  36. package/Runtime/Internal/ForceQuitMonitor.cs +43 -31
  37. package/Runtime/Klavar/Attributes/MinMaxAttribute.cs +12 -3
  38. package/Runtime/UI/ScrollView/GDKScrollView.cs +83 -48
  39. package/Runtime/Utils/GDKFileUtils.cs +2 -7
  40. package/Runtime/Utils/GDKUtils.cs +20 -8
  41. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,49 @@
1
+ ## [0.2.88] - 2025-07-05
2
+ - [Dev] Various fixes for Unity 6
3
+ - [Fix] Update marker block id for Notion change log
4
+ - [Dev] Add AI config
5
+ - [Dev] Improve crap score 2
6
+ - [Dev] Reduce complexity & crap score
7
+ - [Dev] Various warning fixes & Improve message verification in tests
8
+ - [Fix] Compiler error in Unity 2023+
9
+ - [Dev] Track max adapters
10
+ - [Fix] Do not override config when Adapter id is not available
11
+ - [Fix] Bypass file utils unit test
12
+ - [Dev] Improve verbose logging
13
+ - [BugFix]: Fix sentry issue : Null exception issue
14
+ - [Fix] Missing User Mapping in MaxAdapter
15
+ - [Fix] Manage ad activity killed routine
16
+ - [Fix] Attach JNI thread
17
+ - [Fix] Missing DoOnMainThread for ConsentInformation update
18
+ - [Fix] Send GDKVersionTracking only for Android/iOS
19
+ - [Dev] Rename Remote Config Data Source
20
+ - [Fix] Improve disk space checking with thead pool
21
+ - [Dev] Refactor DiskSpacePopup
22
+ - [Fix] Add missing scope registry for integration test
23
+ - [Dev] Add UniTask Dependency
24
+
25
+ ## [0.2.87] - 2025-06-19
26
+ - [Dev] Add AI config
27
+ - [Dev] Improve crap score 2
28
+ - [Dev] Reduce complexity & crap score
29
+ - [Dev] Various warning fixes & Improve message verification in tests
30
+ - [Fix] Compiler error in Unity 2023+
31
+ - [Dev] Track max adapters
32
+ - [Fix] Do not override config when Adapter id is not available
33
+ - [Fix] Bypass file utils unit test
34
+ - [Dev] Improve verbose logging
35
+ - [BugFix]: Fix sentry issue : Null exception issue
36
+ - [Fix] Missing User Mapping in MaxAdapter
37
+ - [Fix] Manage ad activity killed routine
38
+ - [Fix] Attach JNI thread
39
+ - [Fix] Missing DoOnMainThread for ConsentInformation update
40
+ - [Fix] Send GDKVersionTracking only for Android/iOS
41
+ - [Dev] Rename Remote Config Data Source
42
+ - [Fix] Improve disk space checking with thead pool
43
+ - [Dev] Refactor DiskSpacePopup
44
+ - [Fix] Add missing scope registry for integration test
45
+ - [Dev] Add UniTask Dependency
46
+
1
47
  ## [0.2.86] - 2025-05-22
2
48
  - [Dev] Track max adapters
3
49
  - [Fix] Do not override config when Adapter id is not available
@@ -245,8 +245,10 @@ namespace Amanotes.Editor
245
245
  bannerTitle ??= new GUIContent()
246
246
  {
247
247
  image = logo.Value,
248
- text = $"<b>AmaGDK</b> <size=12><color=gray>v{AmaGDK.VERSION}</color></size>"
248
+ text = $"<b>AmaGDK</b> <size=12><color=\"grey\">v{AmaGDK.VERSION}</color></size>"
249
249
  };
250
+
251
+
250
252
  AmaGUI.SectionLabel(bannerTitle);
251
253
  var rect = GUILayoutUtility.GetLastRect();
252
254
  var btnRect = rect;
@@ -221,7 +221,11 @@ namespace Amanotes.Core
221
221
  if (scriptingBackend.TryConvertToEnum(out ScriptingImplementation backend))
222
222
  {
223
223
  Console.WriteLine($":: Setting ScriptingBackend to {backend}");
224
+ #if UNITY_2023_2_OR_NEWER
225
+ PlayerSettings.SetScriptingBackend(UnityEditor.Build.NamedBuildTarget.FromBuildTargetGroup(targetGroup), backend);
226
+ #else
224
227
  PlayerSettings.SetScriptingBackend(targetGroup, backend);
228
+ #endif
225
229
  }
226
230
  else
227
231
  {
@@ -231,7 +235,11 @@ namespace Amanotes.Core
231
235
  }
232
236
  else
233
237
  {
238
+ #if UNITY_2023_2_OR_NEWER
239
+ var defaultBackend = PlayerSettings.GetDefaultScriptingBackend(UnityEditor.Build.NamedBuildTarget.FromBuildTargetGroup(targetGroup));
240
+ #else
234
241
  var defaultBackend = PlayerSettings.GetDefaultScriptingBackend(targetGroup);
242
+ #endif
235
243
  Console.WriteLine($":: Using project's configured ScriptingBackend (should be {defaultBackend} for targetGroup {targetGroup}");
236
244
  }
237
245
  }
@@ -363,15 +371,24 @@ namespace Amanotes.Core
363
371
  #if UNITY_2019_1_OR_NEWER
364
372
  PlayerSettings.Android.useCustomKeystore = true;
365
373
  #endif
374
+
375
+ #if UNITY_2023_2_OR_NEWER
366
376
  PlayerSettings.Android.keystorePass = keystorePass;
377
+ #else
378
+ PlayerSettings.keystorePass = keystorePass;
379
+ #endif
380
+
367
381
  PlayerSettings.Android.keyaliasPass = keystoreAliasPass;
368
382
  }
369
383
 
370
384
  private static void HandleDebugSymbols()
371
385
  {
372
- #if UNITY_2021_1_OR_NEWER
386
+ #if UNITY_6000_0_OR_NEWER
387
+ UnityEditor.Android.UserBuildSettings.DebugSymbols.level = Unity.Android.Types.DebugSymbolLevel.SymbolTable;
388
+ #elif UNITY_2021_1_OR_NEWER
373
389
  EditorUserBuildSettings.androidCreateSymbols = AndroidCreateSymbols.Debugging;
374
- #elif UNITY_2019_2_OR_NEWER
390
+ #else
391
+ // For Unity 2020.3 and earlier, use the legacy boolean property
375
392
  EditorUserBuildSettings.androidCreateSymbolsZip = true;
376
393
  #endif
377
394
  }
@@ -327,7 +327,9 @@ namespace Amanotes.Editor
327
327
  EditorUserBuildSettings.buildAppBundle = false;//isAAB;
328
328
  EditorUserBuildSettings.exportAsGoogleAndroidProject = false;
329
329
 
330
- #if UNITY_2021_1_OR_NEWER
330
+ #if UNITY_6000_0_OR_NEWER
331
+ UnityEditor.Android.UserBuildSettings.DebugSymbols.level = Unity.Android.Types.DebugSymbolLevel.None;
332
+ #elif UNITY_2021_1_OR_NEWER
331
333
  EditorUserBuildSettings.androidCreateSymbols = AndroidCreateSymbols.Disabled;
332
334
  #else
333
335
  EditorUserBuildSettings.androidCreateSymbolsZip = false;
@@ -426,13 +428,21 @@ namespace Amanotes.Editor
426
428
  if (isAndroid)
427
429
  {
428
430
  buildNumber = PlayerSettings.Android.bundleVersionCode;
431
+ #if UNITY_2023_2_OR_NEWER
432
+ packageName = PlayerSettings.GetApplicationIdentifier(UnityEditor.Build.NamedBuildTarget.Android);
433
+ #else
429
434
  packageName = PlayerSettings.GetApplicationIdentifier(BuildTargetGroup.Android);
435
+ #endif
430
436
  }
431
437
 
432
438
  if (isIOS)
433
439
  {
434
440
  int.TryParse(PlayerSettings.iOS.buildNumber, out buildNumber);
441
+ #if UNITY_2023_2_OR_NEWER
442
+ packageName = PlayerSettings.GetApplicationIdentifier(UnityEditor.Build.NamedBuildTarget.iOS);
443
+ #else
435
444
  packageName = PlayerSettings.GetApplicationIdentifier(BuildTargetGroup.iOS);
445
+ #endif
436
446
  }
437
447
 
438
448
  return this;
@@ -446,13 +456,21 @@ namespace Amanotes.Editor
446
456
  if (isAndroid)
447
457
  {
448
458
  PlayerSettings.Android.bundleVersionCode = buildNumber;
459
+ #if UNITY_2023_2_OR_NEWER
460
+ PlayerSettings.SetApplicationIdentifier(UnityEditor.Build.NamedBuildTarget.Android, packageName);
461
+ #else
449
462
  PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.Android, packageName);
463
+ #endif
450
464
  }
451
465
 
452
466
  if (isIOS)
453
467
  {
454
468
  PlayerSettings.iOS.buildNumber = buildNumber.ToString();
469
+ #if UNITY_2023_2_OR_NEWER
470
+ PlayerSettings.SetApplicationIdentifier(UnityEditor.Build.NamedBuildTarget.iOS, packageName);
471
+ #else
455
472
  PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.iOS, packageName);
473
+ #endif
456
474
  }
457
475
 
458
476
  EditorApplication.RepaintProjectWindow();
@@ -486,7 +504,13 @@ namespace Amanotes.Editor
486
504
  // Must use absolute path or else gradle build fail
487
505
  var keystoreFI = new FileInfo(path);
488
506
  PlayerSettings.Android.keystoreName = keystoreFI.FullName;
507
+
508
+ #if UNITY_2023_2_OR_NEWER
509
+ PlayerSettings.Android.keystorePass = keystorePassword;
510
+ #else
489
511
  PlayerSettings.keystorePass = keystorePassword;
512
+ #endif
513
+
490
514
  PlayerSettings.Android.keyaliasPass = aliasPassword;
491
515
  PlayerSettings.Android.keyaliasName = alias;
492
516
  }
@@ -201,6 +201,24 @@ namespace Amanotes.Editor
201
201
  Debug.Log($"Set build property: {property.key} = {property.value}");
202
202
  }
203
203
  }
204
+
205
+ static PBXCapabilityType CapabilityFromString(string name)
206
+ {
207
+ return name switch
208
+ {
209
+ "iCloud" => PBXCapabilityType.iCloud,
210
+ "InAppPurchase" => PBXCapabilityType.InAppPurchase,
211
+ "GameCenter" => PBXCapabilityType.GameCenter,
212
+ "PushNotifications" => PBXCapabilityType.PushNotifications,
213
+ "Wallet" => PBXCapabilityType.Wallet,
214
+ "ApplePay" => PBXCapabilityType.ApplePay,
215
+ "PersonalVPN" => PBXCapabilityType.PersonalVPN,
216
+ "HealthKit" => PBXCapabilityType.HealthKit,
217
+ "HomeKit" => PBXCapabilityType.HomeKit,
218
+ // add any others you use…
219
+ _ => throw new ArgumentException($"Unknown capability: {name}")
220
+ };
221
+ }
204
222
 
205
223
  // Enable Capabilities
206
224
  private void AddCapabilities(PBXProject proj, string pathToBuildProject, string targetGuid)
@@ -209,7 +227,7 @@ namespace Amanotes.Editor
209
227
  {
210
228
  if (!capability.enable) continue;
211
229
 
212
- var pbxCapabilityType = PBXCapabilityType.StringToPBXCapabilityType(capability.type);
230
+ var pbxCapabilityType = CapabilityFromString(capability.type);
213
231
  if (pbxCapabilityType == null)
214
232
  {
215
233
  Debug.LogError($"Unknown capability type: {capability.type}");
@@ -225,12 +243,12 @@ namespace Amanotes.Editor
225
243
  continue;
226
244
  }
227
245
  proj.AddCapability(targetGuid, pbxCapabilityType, entitlementsPath);
228
- Debug.Log($"Added capability: {pbxCapabilityType.id} with entitlements: {entitlementsPath}");
246
+ Debug.Log($"Added capability: {pbxCapabilityType} with entitlements: {entitlementsPath}");
229
247
  }
230
248
  else
231
249
  {
232
250
  proj.AddCapability(targetGuid, pbxCapabilityType);
233
- Debug.Log($"Added capability: {pbxCapabilityType.id}");
251
+ Debug.Log($"Added capability: {pbxCapabilityType}");
234
252
  }
235
253
  }
236
254
  }
@@ -18,6 +18,13 @@ namespace Amanotes.Editor
18
18
  {
19
19
  var result = new Dictionary<string, string>();
20
20
  string mediationPath = "Assets/MaxSdk/Mediation";
21
+
22
+ // Check if the MaxSdk mediation directory exists before proceeding
23
+ if (!Directory.Exists(mediationPath))
24
+ {
25
+ return result; // Return empty dictionary if MaxSdk is not installed
26
+ }
27
+
21
28
  string[] adapterFolders = Directory.GetDirectories(mediationPath);
22
29
 
23
30
  foreach (string adapterFolder in adapterFolders)
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file