admanagekit-mcp-server 1.2.3 → 1.2.5

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/content/README.md CHANGED
@@ -5,9 +5,13 @@
5
5
 
6
6
  AdManageKit is a comprehensive Android library designed to simplify the integration and management of Google AdMob ads, Google Play Billing, and User Messaging Platform (UMP) consent.
7
7
 
8
- **Latest Version `4.4.4`** is a **critical billing hotfix**. No API changed. It repairs a regression introduced in 4.4.3, where the Play Billing connection was never started at all: `connectToGooglePlayBilling()` guarded on `billingClient.isReady()`, which reports `true` the instant a client is built, so `startConnection(...)` was skipped on every fresh client. Setup never ran, no product details or entitlement were ever fetched, and there was **no failure callback and no error log** to explain it. **If you ship the billing module on 4.4.3, upgrade.** Also fixes a long-standing bug where a timed-out setup reported itself as initializedpermanently suppressing the host app's `if (!initBillingFinish) initBilling()` retry and adds `DEBUG` logging across the billing connection lifecycle. See [Release Notes v4.4.4](docs/release-notes/RELEASE_NOTES_v4.4.4.md).
8
+ **Latest Version `4.4.6`** is a **maintenance release**. No API changed and no library source file changed the whole diff is dependencies and docs. It **downgrades** `androidx.work:work-runtime` **2.11.2 2.9.1**: WorkManager **2.10 and 2.11** call `JobScheduler.forNamespace` whenever `SDK_INT >= 34`, and modified or spoofed ROMs that report API 34 over an older framework have no such method — the `NoSuchMethodError` then kills the **whole process during bind** (`Unable to get provider androidx.startup.InitializationProvider`), because `androidx.startup` builds WorkManager in a `ContentProvider` installed before `Application.onCreate` runs. 2.9.1 is the last release without that call. AdManageKit has no WorkManager code of its own; the pin only steers the version the ads SDK pulls in, and since Gradle resolves the **highest** version in the graph, an app that declares 2.10/2.11 itself keeps the crash pin `androidx.work:work-runtime:2.9.1` in your app too. Also picks up AGP **9.4.0**, Firebase BOM **34.19.0**, Compose BOM **2026.09.00** and Yandex Mobile Ads **8.4.0**. See [Release Notes v4.4.6](docs/release-notes/RELEASE_NOTES_v4.4.6.md).
9
9
 
10
- > ⚠️ **4.4.3 is superseded.** Its billing regression makes purchases unusable; use 4.4.4.
10
+ **Version `4.4.5`** is a **patch release**. No API changed. It fixes a `BannerAdView` bug that renders a **blank banner slot inside Jetpack Compose**: swapping the shimmer placeholder for the loaded `AdView` raises an ordinary `requestLayout()`, which cannot cross Compose's `AndroidView` interop boundary once any ancestor already carries a pending layout flag — so Compose never re-measured the subtree and the freshly attached `AdView` was left at 0×0. The ad loaded, `onAdLoaded`/`onAdImpression` fired and the impression was **logged and billed**, but the slot stayed blank until a rotation or resize forced a full traversal. Both the AdMob and `BannerWaterfall` success paths now force the measure/layout pass themselves. Also picks up the Next-Gen GMA SDK **1.4.0**, AGP **9.3.2** and Firebase BOM **34.18.0**. See [Release Notes v4.4.5](docs/release-notes/RELEASE_NOTES_v4.4.5.md).
11
+
12
+ **Version `4.4.4`** is a **critical billing hotfix**. No API changed. It repairs a regression introduced in 4.4.3, where the Play Billing connection was never started at all: `connectToGooglePlayBilling()` guarded on `billingClient.isReady()`, which reports `true` the instant a client is built, so `startConnection(...)` was skipped on every fresh client. Setup never ran, no product details or entitlement were ever fetched, and there was **no failure callback and no error log** to explain it. **If you ship the billing module on 4.4.3, upgrade.** Also fixes a long-standing bug where a timed-out setup reported itself as initialized — permanently suppressing the host app's `if (!initBillingFinish) initBilling()` retry — and adds `DEBUG` logging across the billing connection lifecycle. See [Release Notes v4.4.4](docs/release-notes/RELEASE_NOTES_v4.4.4.md).
13
+
14
+ > ⚠️ **4.4.3 is superseded.** Its billing regression makes purchases unusable; use 4.4.4 or newer.
11
15
 
12
16
  **Version `4.4.3`** is a bug-fix and dependency release. No API changed. Two silent-failure bugs are fixed, both of which cost money: a **rewarded load the manager had given up on could sabotage the load that replaced it** — discarding an ad a newer load had just delivered, and clearing the "loading" flag out from under a request still in flight — and **billing could stop acknowledging purchases for the rest of the process**, which lets Play auto-refund a completed purchase on day 3. Acknowledgment also no longer requires the purchase to match a configured product id. Picks up the Next-Gen GMA SDK **1.3.1**, Yandex Mobile Ads **8.3.0**, and refreshed AndroidX/Firebase/Compose BOMs. See [Release Notes v4.4.3](docs/release-notes/RELEASE_NOTES_v4.4.3.md).
13
17
 
@@ -35,7 +39,7 @@ Since **4.2.0** the library runs on the Google Mobile Ads **Next-Gen SDK** (`ads
35
39
 
36
40
  ## Next-Gen GMA SDK
37
41
 
38
- As of v4.2.0, AdManageKit runs on Google's **Next-Gen Google Mobile Ads SDK** (`com.google.android.libraries.ads.mobile.sdk`, stable `1.3.1` as of 4.4.3) instead of the legacy `com.google.android.gms:play-services-ads`. This isn't a branch or an opt-in — it's the only version of AdManageKit going forward.
42
+ As of v4.2.0, AdManageKit runs on Google's **Next-Gen Google Mobile Ads SDK** (`com.google.android.libraries.ads.mobile.sdk`, stable `1.4.0` as of 4.4.6) instead of the legacy `com.google.android.gms:play-services-ads`. This isn't a branch or an opt-in — it's the only version of AdManageKit going forward.
39
43
 
40
44
  ### Why the move
41
45
 
@@ -199,15 +203,15 @@ dependencyResolutionManagement {
199
203
  **Step 2:** Add dependencies to your app's `build.gradle`:
200
204
 
201
205
  ```groovy
202
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.4'
203
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.4'
204
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.4'
206
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.6'
207
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.6'
208
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.6'
205
209
 
206
210
  // For Jetpack Compose support
207
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.4'
211
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.6'
208
212
 
209
213
  // For Yandex Ads multi-provider support
210
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.4'
214
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.6'
211
215
  ```
212
216
 
213
217
  **Step 3:** Ensure your app's `compileSdk` is **37 or higher** (required transitively as of 4.2.0).
@@ -781,6 +785,8 @@ Register it **before** `initBilling`. Products land in `unfetched` when the id i
781
785
  - [Multi-Provider Waterfall](docs/MULTI_PROVIDER_WATERFALL.md)
782
786
  - [Yandex Integration](docs/YANDEX_INTEGRATION.md)
783
787
  - [Billing Integration Guide](docs/APP_PURCHASE_GUIDE.md)
788
+ - [Release Notes v4.4.6](docs/release-notes/RELEASE_NOTES_v4.4.6.md)
789
+ - [Release Notes v4.4.5](docs/release-notes/RELEASE_NOTES_v4.4.5.md)
784
790
  - [Release Notes v4.4.4](docs/release-notes/RELEASE_NOTES_v4.4.4.md)
785
791
  - [Release Notes v4.4.3](docs/release-notes/RELEASE_NOTES_v4.4.3.md)
786
792
  - [Release Notes v4.4.2](docs/release-notes/RELEASE_NOTES_v4.4.2.md)
@@ -0,0 +1,63 @@
1
+ # Release Notes — v4.4.5
2
+
3
+ **Release Date:** 2026-08-27
4
+
5
+ ## Overview
6
+
7
+ v4.4.5 is a **patch release**. No API was added, removed or changed.
8
+
9
+ It fixes a `BannerAdView` bug that renders a **blank banner slot inside Jetpack Compose**: the ad loads, reports success, logs its impression — and nothing is drawn, because the freshly attached `AdView` is left measured at 0×0. It also picks up the Google Mobile Ads Next-Gen SDK **1.4.0**, AGP **9.3.2** and Firebase BOM **34.18.0**.
10
+
11
+ Upgrading is a drop-in from 4.4.x.
12
+
13
+ ---
14
+
15
+ ## Fixed
16
+
17
+ ### Banner ad loaded but rendered blank under Compose interop
18
+
19
+ `BannerAdView` builds its slot as a shimmer placeholder, then swaps in the real `AdView` when the load succeeds — `layBannerAd.removeAllViews()`, `addView(adView, ...)`, hide the shimmer. Swapping the children of a `ViewGroup` raises an ordinary `requestLayout()`, and in a plain View hierarchy that is enough.
20
+
21
+ Inside Compose's `AndroidView` interop it is not. `View.requestLayout()` only walks up while each ancestor reports `isLayoutRequested == false`; the moment one already carries a pending layout flag, propagation stops there. For an interop subtree the request has to reach `AndroidViewsHandler` — the **only** place that turns a View layout request into a `LayoutNode.requestRemeasure()`. If any ancestor on the way up (the `ViewFactoryHolder` included) is already flagged, the request dies below that point and Compose never re-measures the subtree.
22
+
23
+ The consequence is that the banner keeps the measurement it had while the shimmer was mounted, and the `AdView` attached after that pass is never measured at all:
24
+
25
+ - the ad loads successfully, `onAdLoaded` and `onAdImpression` both fire
26
+ - the impression is logged and billed
27
+ - the slot renders **blank** — the container is still sized for the shimmer, the ad view is 0×0
28
+ - it stays blank until something unrelated forces a full traversal (a rotation, a keyboard, a resize)
29
+
30
+ Recomposition does not rescue it either: a semantics or `testTag` change does not invalidate measurement.
31
+
32
+ Both success paths — the AdMob path (`handleAdLoadSuccess`) and the multi-provider `BannerWaterfall` path (`onBannerLoaded`) — now call a new private `forceRelayoutAfterAdSwap()` after the swap. It walks up from the banner flagging each ancestor with `forceLayout()` (which makes `View.measure()` re-run even when the `MeasureSpec`s are unchanged — exactly what a swapped-in child needs), stopping at Compose's interop holder when there is one, and then requests the layout from **above** that holder, where `AndroidViewsHandler.requestLayout()` sees `child.isLayoutRequested == true` and schedules the remeasure. With no Compose holder in the chain, normal propagation works once the chain is flagged and a plain `requestLayout()` is issued.
33
+
34
+ Because a request raised while a layout pass is already running can still be dropped (`ViewRootImpl.requestLayoutDuringLayout`), the pass is repeated once on the next frame via `post { ... }`, which also logs the resulting container and ad-view dimensions through `AdDebugUtils` for diagnosis.
35
+
36
+ There is no behavior change for banners hosted in XML — the extra pass is a no-op when the layout is already correct.
37
+
38
+ ## Changed
39
+
40
+ - **Dependency updates:** Google Mobile Ads Next-Gen SDK **1.3.1 → 1.4.0**, Android Gradle Plugin **9.3.0 → 9.3.2**, Firebase BOM **34.17.0 → 34.18.0**, org.json (test only) **20260719 → 20260814**. Play Billing stays at **9.1.0**, Kotlin at **2.2.10**, Yandex Mobile Ads at **8.3.0**, Compose BOM at **2026.08.00**
41
+
42
+ ## Notes
43
+
44
+ - The fix is not test-covered: it depends on a real Compose interop measure/layout traversal, which the Robolectric harness cannot drive faithfully. It was verified on-device against a Compose-hosted banner slot. The existing 176 tests are unaffected
45
+ - No billing changes in this release
46
+
47
+ ---
48
+
49
+ ## Upgrading
50
+
51
+ ```gradle
52
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.5'
53
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.5'
54
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.5'
55
+
56
+ // For Jetpack Compose support
57
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.5'
58
+
59
+ // For Yandex Ads multi-provider support
60
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.5'
61
+ ```
62
+
63
+ No code changes are required.
@@ -0,0 +1,110 @@
1
+ # Release Notes — v4.4.6
2
+
3
+ **Release Date:** 2026-09-14
4
+
5
+ ## Overview
6
+
7
+ v4.4.6 is a **maintenance release**. No API was added, removed or changed, and **no library source file changed** — the entire diff is `gradle/libs.versions.toml`, the five publication blocks, and documentation.
8
+
9
+ The one change worth reading is a deliberate **downgrade** of WorkManager to **2.9.1**. WorkManager 2.10 and 2.11 call `JobScheduler.forNamespace` on any device reporting `SDK_INT >= 34`; on modified or spoofed ROMs that report API 34 over an older framework the method is absent, and the resulting `NoSuchMethodError` kills the process at startup via `androidx.startup`'s `WorkManagerInitializer`. 2.9.1 is the last release without that call. It also picks up AGP **9.4.0**, Firebase BOM **34.19.0**, Compose BOM **2026.09.00** and Yandex Mobile Ads **8.4.0**.
10
+
11
+ Upgrading is a drop-in from 4.4.x.
12
+
13
+ ---
14
+
15
+ ## Changed
16
+
17
+ ### WorkManager pinned back to 2.9.1 (a downgrade, on purpose)
18
+
19
+ `androidx.work:work-runtime` moves **2.11.2 → 2.9.1**. This is the only dependency in the catalog moving backwards, and it is intentional.
20
+
21
+ **The defect.** WorkManager **2.10 and 2.11** call `android.app.job.JobScheduler.forNamespace` whenever `Build.VERSION.SDK_INT >= 34`. That method genuinely exists on API 34 — but modified and spoofed ROMs that *report* API 34 while running an older framework underneath do not have it. Constructing the WorkManager singleton on such a device throws `NoSuchMethodError`.
22
+
23
+ That throw is fatal rather than merely inconvenient because `androidx.startup` auto-initializes WorkManager through `WorkManagerInitializer`, which runs from `InitializationProvider` — a `ContentProvider`. `ActivityThread.handleBindApplication` installs content providers **after** `Application.attachBaseContext` but **before** `Application.onCreate`, so there is no user code on the stack to catch it and nothing in the app has run yet. The process dies during bind:
24
+
25
+ ```
26
+ Fatal Exception: java.lang.RuntimeException: Unable to get provider
27
+ androidx.startup.InitializationProvider: java.lang.NoSuchMethodError:
28
+ No virtual method forNamespace(Ljava/lang/String;)Landroid/app/job/JobScheduler;
29
+ in class Landroid/app/job/JobScheduler; or its super classes
30
+ (declaration of 'android.app.job.JobScheduler' appears in /system/framework/framework.jar)
31
+ at android.app.ActivityThread.installProvider(ActivityThread.java:7467)
32
+ at android.app.ActivityThread.installContentProviders(ActivityThread.java:6973)
33
+ at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6744)
34
+ ```
35
+
36
+ In a minified build the `StartupException` between the two appears under its obfuscated name (`y40:` or similar), so match on the `InitializationProvider` + `forNamespace` pair rather than on the middle frame. `declaration ... appears in /system/framework/framework.jar` is the confirmation that the device's framework really is older than the API level it advertises.
37
+
38
+ **2.9.1 is the last release without that call**, which is why the pin lands exactly there rather than at some newer 2.10.x or 2.11.x patch — the call is present throughout both lines.
39
+
40
+ **This is a host-device problem, not an ads problem.** No source file in any of AdManageKit's five modules references `androidx.work`. The dependency is declared purely to control which version lands in the graph — the Next-Gen GMA SDK asks for `work-runtime:2.7.0` transitively, and this entry is what decides where that resolves. The downgrade changes nothing about the library's behavior, surface, or minimum requirements; it only moves a pin.
41
+
42
+ **The pin does not override your app.** It is an `implementation` dependency, so it lands in the published POM at `runtime` scope, and Gradle's conflict resolution still picks the **highest** version across the whole graph. If your app declares 2.10 or 2.11 directly, or depends on anything that does, you resolve that version and you keep the crash. Check what you actually resolve:
43
+
44
+ ```bash
45
+ ./gradlew :app:dependencies --configuration releaseRuntimeClasspath | grep androidx.work
46
+ ```
47
+
48
+ If that shows 2.10.x or 2.11.x and you are seeing `NoSuchMethodError` on `JobScheduler.forNamespace` in your startup crash reports, pin it in the app as well:
49
+
50
+ ```kotlin
51
+ dependencies {
52
+ implementation("androidx.work:work-runtime:2.9.1")
53
+ }
54
+ ```
55
+
56
+ **If you need 2.10+ APIs**, do not downgrade your app to match the library. Take the auto-initializer out of the startup path instead, so a failure is catchable rather than fatal — remove `WorkManagerInitializer` in the manifest and initialize WorkManager yourself inside a guard:
57
+
58
+ ```xml
59
+ <provider
60
+ android:name="androidx.startup.InitializationProvider"
61
+ android:authorities="${applicationId}.androidx-startup"
62
+ tools:node="merge">
63
+ <meta-data
64
+ android:name="androidx.work.WorkManagerInitializer"
65
+ android:value="androidx.startup"
66
+ tools:node="remove" />
67
+ </provider>
68
+ ```
69
+
70
+ Then have your `Application` implement `androidx.work.Configuration.Provider`. WorkManager falls back to on-demand initialization at the first `WorkManager.getInstance(context)` call — which happens on your own thread, in your own code, where a `NoSuchMethodError` can be caught and degrade that one feature instead of killing the process. Nothing in AdManageKit depends on which version resolves, or on WorkManager being initialized at all.
71
+
72
+ ### Other dependency updates
73
+
74
+ - Android Gradle Plugin **9.3.2 → 9.4.0**
75
+ - Firebase BOM **34.18.0 → 34.19.0**
76
+ - Compose BOM **2026.08.00 → 2026.09.00**
77
+ - Yandex Mobile Ads **8.3.0 → 8.4.0**
78
+ - Robolectric (test only) **4.16.1 → 4.17**
79
+
80
+ Unchanged: Google Mobile Ads Next-Gen SDK **1.4.0**, Play Billing **9.1.0**, Kotlin **2.2.10**, UMP **4.0.0**, Compose compiler **1.5.8**.
81
+
82
+ ## Fixed
83
+
84
+ ### A stray leading space in the `workRuntime` catalog entry
85
+
86
+ The downgraded version was written as `" 2.9.1"` — with a leading space. Gradle does not trim version strings, so it treats that as a distinct and unresolvable coordinate rather than 2.9.1. Caught before tagging; the published 4.4.6 resolves `androidx.work:work-runtime:2.9.1` cleanly, verified against `:AdManageKit:dependencies`.
87
+
88
+ ## Notes
89
+
90
+ - No behavioral change in any ad, billing, consent or waterfall path. The existing 176 tests pass unchanged
91
+ - Robolectric stays pinned to SDK 35 via `robolectric.properties`; the 4.17 bump does not change that
92
+ - There is nothing to migrate — upgrading is a one-line version bump from 4.4.5
93
+
94
+ ---
95
+
96
+ ## Upgrading
97
+
98
+ ```gradle
99
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.6'
100
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.6'
101
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.6'
102
+
103
+ // For Jetpack Compose support
104
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.6'
105
+
106
+ // For Yandex Ads multi-provider support
107
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.6'
108
+ ```
109
+
110
+ No code changes are required.
@@ -1,4 +1,4 @@
1
- # Ad Loading Strategies - AdManageKit v4.4.4
1
+ # Ad Loading Strategies - AdManageKit v4.4.5
2
2
 
3
3
  ## Overview
4
4
 
@@ -1,10 +1,10 @@
1
- # App Open Ads - AdManageKit v4.4.4
1
+ # App Open Ads - AdManageKit v4.4.5
2
2
 
3
3
  ## Overview
4
4
 
5
5
  AdManageKit provides lifecycle-aware app open ad management through `AppOpenManager`. App open ads display when users launch or return to your app, with support for loading strategies, ad freshness enforcement, welcome dialogs, activity/screen exclusion, and the multi-provider waterfall.
6
6
 
7
- **Library Version**: v4.4.4
7
+ **Library Version**: v4.4.5
8
8
 
9
9
  ## Features
10
10
 
@@ -23,9 +23,9 @@ AdManageKit provides lifecycle-aware app open ad management through `AppOpenMana
23
23
 
24
24
  ```groovy
25
25
  dependencies {
26
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.4'
27
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.4'
28
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.4'
26
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.5'
27
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.5'
28
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.5'
29
29
  }
30
30
  ```
31
31
 
@@ -1,10 +1,10 @@
1
- # Banner Ads - AdManageKit v4.4.4
1
+ # Banner Ads - AdManageKit v4.4.5
2
2
 
3
3
  ## Overview
4
4
 
5
5
  AdManageKit provides `BannerAdView` for banner ad integration with every standard AdMob size, adaptive banners, collapsible banners, a size-aware loading shimmer, auto-refresh, and smart retry logic.
6
6
 
7
- **Library Version**: v4.4.4
7
+ **Library Version**: v4.4.5
8
8
 
9
9
  ## Features
10
10
 
@@ -23,8 +23,8 @@ AdManageKit provides `BannerAdView` for banner ad integration with every standar
23
23
 
24
24
  ```groovy
25
25
  dependencies {
26
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.4'
27
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.4'
26
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.5'
27
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.5'
28
28
  }
29
29
  ```
30
30
 
@@ -7,8 +7,8 @@ AdManageKit provides a comprehensive billing integration module (`admanagekit-bi
7
7
  ### 1. Add Dependency
8
8
 
9
9
  ```groovy
10
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.4'
11
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.4'
10
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.5'
11
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.5'
12
12
  ```
13
13
 
14
14
  ### 2. Define Products
@@ -1,4 +1,4 @@
1
- # Configuration - AdManageKit v4.4.4
1
+ # Configuration - AdManageKit v4.4.5
2
2
 
3
3
  ## Overview
4
4
 
@@ -6,7 +6,14 @@
6
6
 
7
7
  AdManageKit is a comprehensive Android library designed to simplify the integration and management of Google AdMob ads, Google Play Billing, and User Messaging Platform (UMP) consent.
8
8
 
9
- **Latest Version: `4.4.4`**
9
+ **Latest Version: `4.4.5`**
10
+
11
+ ## What's New in 4.4.5
12
+
13
+ Patch release, no API changes.
14
+
15
+ - **A banner loaded successfully but rendered blank under Compose** — `BannerAdView` swaps the shimmer placeholder for the loaded `AdView`, which raises an ordinary `requestLayout()`. That request cannot cross Compose's `AndroidView` interop boundary once any ancestor already carries a pending layout flag, so Compose never re-measured the subtree and the freshly attached `AdView` was left at 0×0. The ad loaded, `onAdLoaded`/`onAdImpression` fired and the impression was logged and billed, but the slot stayed blank until a rotation or resize forced a full traversal. Both the AdMob and `BannerWaterfall` success paths now force the measure/layout pass themselves; XML-hosted banners are unaffected
16
+ - **Dependencies** — Next-Gen GMA SDK 1.4.0, Android Gradle Plugin 9.3.2, Firebase BOM 34.18.0
10
17
 
11
18
  ## What's New in 4.4.4
12
19
 
@@ -20,7 +27,7 @@ Critical billing hotfix, no API changes. **If you ship the billing module on 4.4
20
27
 
21
28
  Bug-fix and dependency release, no API changes. Two silent-failure bugs, both of which cost money.
22
29
 
23
- > ⚠️ 4.4.3's billing regression makes purchases unusable — use 4.4.4.
30
+ > ⚠️ 4.4.3's billing regression makes purchases unusable — use 4.4.4 or newer.
24
31
 
25
32
  - **A timed-out rewarded load could sabotage the one that replaced it** — a request handed to the SDK cannot be cancelled, and when it finally reported back it could discard an ad a *newer* load had just delivered, clear the loading flag out from under a request still in flight, and fail callers waiting on a load that had not finished. Every load path now carries a generation token, and a late ad is kept for the next show instead of dropped
26
33
  - **Billing could stop acknowledging purchases for the rest of the process** — the connection flag could latch `false` after one disconnect while the client was actually ready, disabling every purchase re-query including the acknowledgment retry. Play auto-refunds an unacknowledged purchase after 3 days
@@ -94,15 +101,15 @@ dependencyResolutionManagement {
94
101
  **Step 2:** Add dependencies to your app's `build.gradle`:
95
102
 
96
103
  ```groovy
97
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.4'
98
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.4'
99
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.4'
104
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.5'
105
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.5'
106
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.5'
100
107
 
101
108
  // For Jetpack Compose support
102
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.4'
109
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.5'
103
110
 
104
111
  // For Yandex Ads multi-provider support
105
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.4'
112
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.5'
106
113
  ```
107
114
 
108
115
  **Step 3:** Ensure your app's `compileSdk` is **37 or higher** (required transitively as of 4.2.0).
@@ -1,10 +1,10 @@
1
- # Interstitial Ads - AdManageKit v4.4.4
1
+ # Interstitial Ads - AdManageKit v4.4.5
2
2
 
3
3
  ## Overview
4
4
 
5
5
  AdManageKit provides a complete interstitial ad stack with `AdManager` and the fluent `InterstitialAdBuilder`. Features include loading strategies, automatic retry, frequency controls, splash screen support, and Jetpack Compose utilities.
6
6
 
7
- **Library Version**: v4.4.4
7
+ **Library Version**: v4.4.5
8
8
 
9
9
  ## What's New
10
10
 
@@ -23,11 +23,11 @@ AdManageKit provides a complete interstitial ad stack with `AdManager` and the f
23
23
 
24
24
  ```groovy
25
25
  dependencies {
26
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.4'
27
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.4'
28
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.4'
26
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.5'
27
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.5'
28
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.5'
29
29
  // Optional - Jetpack Compose
30
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.4'
30
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.5'
31
31
  }
32
32
  ```
33
33
 
@@ -1,18 +1,18 @@
1
- # Jetpack Compose Integration - AdManageKit v4.4.4
1
+ # Jetpack Compose Integration - AdManageKit v4.4.5
2
2
 
3
3
  ## Overview
4
4
 
5
5
  AdManageKit provides first-class Jetpack Compose support with composable functions for all ad types, state management helpers, and programmatic native ad loading.
6
6
 
7
- **Library Version**: v4.4.4
7
+ **Library Version**: v4.4.5
8
8
 
9
9
  ## Installation
10
10
 
11
11
  ```groovy
12
12
  dependencies {
13
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.4'
14
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.4'
15
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.4'
13
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.5'
14
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.5'
15
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.5'
16
16
  }
17
17
  ```
18
18
 
@@ -38,11 +38,11 @@ This is fully backward compatible -- if no provider chains are configured, all e
38
38
 
39
39
  ```groovy
40
40
  dependencies {
41
- implementation "com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.4"
42
- implementation "com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.4"
41
+ implementation "com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.5"
42
+ implementation "com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.5"
43
43
 
44
44
  // Add Yandex provider
45
- implementation "com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.4"
45
+ implementation "com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.5"
46
46
  }
47
47
  ```
48
48
 
@@ -1,10 +1,10 @@
1
- # Native Ads - AdManageKit v4.4.4
1
+ # Native Ads - AdManageKit v4.4.5
2
2
 
3
3
  ## Overview
4
4
 
5
5
  AdManageKit provides comprehensive native ad support with caching, multiple formats, and the new `NativeTemplateView` (v2.6.0+). Native ads blend seamlessly with your app's content while maximizing engagement.
6
6
 
7
- **Library Version**: v4.4.4
7
+ **Library Version**: v4.4.5
8
8
 
9
9
  ## Features
10
10
 
@@ -19,8 +19,8 @@ AdManageKit provides comprehensive native ad support with caching, multiple form
19
19
 
20
20
  ```groovy
21
21
  dependencies {
22
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.4'
23
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.4'
22
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.5'
23
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.5'
24
24
  }
25
25
  ```
26
26
 
@@ -10,9 +10,9 @@ The `admanagekit-yandex` module provides Yandex Ads SDK providers for the multi-
10
10
 
11
11
  ```groovy
12
12
  dependencies {
13
- implementation "com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.4"
14
- implementation "com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.4"
15
- implementation "com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.4"
13
+ implementation "com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.5"
14
+ implementation "com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.5"
15
+ implementation "com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.5"
16
16
  }
17
17
  ```
18
18
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "admanagekit-mcp-server",
3
- "version": "1.2.3",
3
+ "version": "1.2.5",
4
4
  "description": "MCP server for AdManageKit Android library - documentation lookup and code generation",
5
5
  "main": "dist/index.js",
6
6
  "bin": {