Skip to main content
Version: v2.0

Changelog

Latest changes to PremiumAds mediation adapters (Google and AppLovin MAX, Android + iOS) and integration documentation.

Subscribe: RSS · Atom · JSON Feed

2026-10-19 — Android NextGen adapter v1.0.2​

Fixed​

  • "Duplicate class a.a / b.a / c.a" build failures. Adapter 1.0.0 and 1.0.1 placed obfuscated internal classes in root-level packages, which collided with other SDKs that do the same (for example Sobot sobotsdk_x). All internal classes now live under the net.premiumads.sdk.adapter.nextgen package, so the adapter builds alongside any other library.
  • Kotlin compatibility. The adapter no longer requires Kotlin 2.2+ in your app; projects on Kotlin 1.9 and 2.x build against it.

Compatibility​

  • NextGen SDK 1.5.0 (required for native ads); other formats also work when the app pins SDK 1.4.x — see the NextGen page. Update: net.premiumads.sdk:admob-adapter-nextgen:1.0.2.

2026-10-07 — Docs: Rewarded Interstitial on the Android/iOS adapter pages​

  • Added Rewarded Interstitial load examples (Android + iOS) to the AdMob and Ad Manager adapter pages, plus the missing iOS Native example. No adapter change: the same PremiumAdsAdapter class already serves Rewarded Interstitial units — create the AdMob ad unit with the Rewarded interstitial format and map it like a rewarded unit.

2026-09-30 — Android adapter v1.0.12 & iOS adapter v1.0.10​

Improved​

  • Faster ad delivery. The adapter now keeps each ad unit's configuration on the device and refreshes it in the background, so ad requests start immediately instead of waiting on a server round-trip every session. If the configuration service is slow, the adapter steps aside within 3 seconds so your waterfall keeps moving.
  • More accurate reporting. Google's own error codes are passed through on Android (no-fill is reported as no-fill), Rewarded Interstitial impressions are counted when Google records them, and both platforms report the real Google Mobile Ads SDK version.
  • Consent handling. Consent flags written in a non-standard format by some CMPs no longer cause ad loads to fail.

Compatibility​

  • Android: Google Mobile Ads SDK 22.2.0 – 25.5.0. Building against 25.5.0 requires Kotlin 2.3+.
  • iOS: Google Mobile Ads SDK 13.0 – 13.11.0.

Upgrade:

implementation("net.premiumads.sdk:admob-adapter-v2:1.0.12")
pod 'PremiumAdsGoogleAdapter', '~> 1.0.10'

2026-09-30 — MAX adapter plugins v1.0.1 (Unity, Flutter, React Native, Cocos Creator, Cocos2d-x)​

Changed​

  • Plugins now use Android MAX adapter 1.0.1, which no longer forces the Google Mobile Ads SDK to 25.4.0. Each plugin declares play-services-ads 23.0.0 as a minimum, so the SDK is always present and a newer version already in your app is kept.
  • Unity: v1.0.1 release. Cocos Creator / Cocos2d-x: updated Gradle snippets. Flutter and React Native: v1.0.1 tags.

2026-09-26 — Unreal Engine plugin for the MAX adapter v1.0.0​

Added​

  • Unreal Engine plugin for the PremiumAds MAX adapter (Android + iOS). Unzip it into your project's Plugins/ folder next to the AppLovin MAX Unreal plugin: Android dependencies are added automatically, and on iOS you add pod 'PremiumAdsMaxAdapter' to AppLovin's Podfile and run its install_pods.py. Supports Banner, MREC, Interstitial and Rewarded; tested with Unreal Engine 5.6.1 and AppLovin MAX Unreal plugin 4.0.3.

Download: max-adapter-unreal releases

2026-09-25 — Android NextGen adapter v1.0.1​

Added​

  • Native ads are back in the NextGen adapter. Native ads served through PremiumAds are now fully clickable and open the advertiser's page, so native inventory can be monetized on the NextGen SDK — no need to keep a separate adapter for native.

Changed​

  • Requires Google NextGen Mobile Ads SDK 1.5.0 or later. Updating the adapter upgrades the SDK automatically.

Upgrade via Gradle:

implementation("com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.5.0")
implementation("net.premiumads.sdk:admob-adapter-nextgen:1.0.1")

2026-09-10 — Android MAX adapter v1.0.1​

Fixed​

  • Adapter no longer forces the Google Mobile Ads SDK version. max-adapter 1.0.0 declared play-services-ads:25.4.0 as a transitive runtime dependency, so Gradle's conflict resolution upgraded any app on an older GMA SDK to 25.4.0. 1.0.1 declares GMA as compileOnly (same as the AppLovin SDK): your app owns the GMA version, and any release from 23.0.0 upward works. Make sure com.google.android.gms:play-services-ads is declared in your app's own dependencies.

Upgrade via Gradle: net.premiumads.sdk:max-adapter:1.0.1 (JFrog Maven).

2026-08-27 — Android adapter v1.0.11​

Fixed​

  • NoSuchMethodError: setRequestAgent crash on Google Mobile Ads SDK 22.x when loading Banner, Interstitial, or Native ads. The adapter is compiled against GMA 23.x, whose AdRequest.Builder hierarchy was refactored in 23.0.0, so the compiled setRequestAgent call site doesn't exist in 22.x at runtime. 1.0.11 adds a compatibility layer that calls the method directly and falls back to reflection on LinkageError, restoring support for apps still on GMA SDK 22.x. Verified across all six ad formats (Banner, Interstitial, Native, Rewarded, Rewarded Interstitial, App Open) on GMA 22.2.0 and 25.1.0.
  • Published Kotlin metadata pinned to 1.9 (kotlin-stdlib 1.9.24 in the POM), so projects building with Kotlin < 2.2 resolve the adapter without metadata-version errors.

Upgrade via Gradle: net.premiumads.sdk:admob-adapter-v2:1.0.11 (JFrog Maven).

2026-08-17 — iOS MAX adapter v1.0.1​

Fixed​

  • Duplicate Objective-C class warnings (Class GADRewardedAd is implemented in both...) when integrating PremiumAdsMaxAdapter 1.0.0 alongside the app's own GoogleMobileAds dependency. The 1.0.0 XCFramework was packaged as a dynamic framework with the Google Mobile Ads SDK statically linked into it (390 duplicated GAD* classes at runtime); 1.0.1 repackages the framework as a static archive containing only adapter code, so GAD* symbols resolve against the app's own GoogleMobileAds at link time. Also shrinks the shipped binary from ~7.6 MB to ~0.8 MB. Upgrade via CocoaPods (pod update PremiumAdsMaxAdapter, run pod repo update first if 1.0.1 isn't visible) or SPM (bump to 1.0.1).

Added​

  • New AppLovin MAX adapter release line: Android net.premiumads.sdk:max-adapter:1.0.0 (JFrog Maven), iOS PremiumAdsMaxAdapter 1.0.1 (CocoaPods trunk / SPM). Supported formats: Banner, MREC, Interstitial, Rewarded, Native (App Open is not supported by MAX custom adapters).

2026-07-03 — iOS adapter v1.0.9​

Fixed​

  • Duplicate Objective-C class warnings (Class GADGestureRecognizer is implemented in both...) when integrating PremiumAdsGoogleAdapter alongside a direct GoogleMobileAds dependency. The 1.0.8 XCFramework was accidentally packaged as a dynamic library with the Google Mobile Ads SDK linked into it; 1.0.9 repackages the framework as a static archive containing only adapter code, so GAD* symbols resolve against the app's own GoogleMobileAds at link time. Also reduces app size by a few MB. Upgrade via CocoaPods (pod update PremiumAdsGoogleAdapter) or SPM (bump to 1.0.9).
  • Framework Info.plist now reports the real adapter version in CFBundleShortVersionString (previously hardcoded 1.0).

2026-05-21​

Documentation​

Fixed​

  • Xcode 26 build failing with framework 'PremiumAdsGoogleAdapter' not found when Podfile.lock is pinned to iOS adapter 1.0.6. The 1.0.6 XCFramework was built before Xcode 26's stricter framework validation. Resolution: bump to 1.0.8 (Xcode 26-compatible):
    cd <project>/build/ios/proj
    pod install --repo-update
    The --repo-update flag is required to refresh the local CocoaPods Specs cache so 1.0.8 becomes visible.

2026-05-04 — iOS adapter v1.0.8​

  • Fixed XCFramework build for Xcode 26: rewrote scripts/build-xcframework.sh to handle the SwiftPM xcodebuild archive regression on Xcode 26 (manual assembly from PackageFrameworks/<fw>.framework + .swiftmodule + resource bundle into a single redistributable framework with auto-generated Headers/ and Modules/module.modulemap).
  • Embedded PrivacyInfo.xcprivacy at both framework root and inside the resource bundle (Apple's privacy scanner checks both locations).
  • Bumped SwiftPM Package.swift and Podfile minimum dependency Google-Mobile-Ads-SDK to >= 13.0.

2026-04-29 — Android adapter v1.0.10​

  • Added ProGuard repackaging rules to prevent obfuscated class collisions:
    -repackageclasses 'net.premiumads.sdk.adapter.internal'
    -allowaccessmodification
    Previously, R8 placed obfuscated internal classes in default packages (a/, b/, c/), which collided at runtime with other R8-obfuscated AARs (notably io.adjoe:foundation).
  • Verified all 43 classes properly namespaced under net/premiumads/sdk/adapter/ (public API) and net/premiumads/sdk/adapter/internal/ (obfuscated implementation). Public API contract for Google Mediation reflection remains unchanged.

2026-04-21 — Android NextGen adapter v1.0.0 (GA)​

Dedicated mediation adapter for Google's NextGen Mobile Ads SDK (com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk), separate artifact from the legacy admob-adapter-v2.

implementation("net.premiumads.sdk:admob-adapter-nextgen:1.0.0")
  • Wired AppOpenAdEventCallback to mediation lifecycle.
  • Reset version line to align with NextGen SDK 1.0.0 GA (previously was being tracked alongside the legacy adapter line).

Limitation — Native ads disabled in NextGen adapter: the legacy mediation click bridge isn't wired to NativeAdView.onInterceptTouchEvent in NextGen SDK 1.0.0, so native ad clicks don't dispatch correctly. Publishers needing native ads should stay on the legacy admob-adapter-v2 on play-services-ads:23.6.0. We're tracking SDK-side resolution with Google.

2026-04-17 — Android adapter v1.0.9​

  • Compatibility fix for Google Mobile Ads SDK v25 (formerly v23.x). Adapter no longer crashes on initialization when host app uses GMA SDK v25 manifest entries.